he SharePoint Scanner component performs full and incremental scans over a SharePoint repository, maintaining a snapshot of the repository and comparing it with the current content to establish what content has been updated. Updated content is then submitted to the configured pipeline in AspireObjects attached to Jobs. As well as the URL of the changed item, the AspireObject will also contain metadata extracted from the repository. Updated content is split in to three types: add, update, and delete. Each type of content is published on a different event so that it may be handled by different Aspire pipelines

The scanner reacts to an incoming job. This job may instruct the scanner to startstoppauseresume or cacheGroups. Typically the start job will contain all information required by the job to perform the crawl. However, the scanner can be configured with default values via application.xml file. When pausing or stopping, the scanner will wait until all the jobs it published have completed before itself completing.

SharePoint 2010 Scanner
Factory Namecom.searchtechnologies.aspire:aspire-sharepoint-connector
subTypedefault
InputsAspireObject from a content source submitter holding all the information required for a crawl
OutputsJobs from the crawl

Configuration


This section lists all configuration parameters available to configure the SharePoint 2010 Scanner component.

General Scanner Component Configuration

ElementTypeDefaultDescription
snapshotDirStringsnapshotsThe directory for snapshot files.
numOfSnapshotBackupsint2The number of snapshots to keep after processing.
waitForSubJobsTimeoutlong600000
(=10 mins)
Scanner timeout while waiting for published jobs to complete.
maxOutstandingTimeStatisticslong1mThe max about of time to wait before updating the statistics file. Whichever happens first between this property and maxOutstandingUpdatesStatistics will trigger an update to the statistics file.


Branch Handler Configuration

 

ElementTypeDefaultDescription
branches/branch/@eventstring The event to configure - onAddonDelete or onUpdate.
branches/branch/@pipelineManagerstring The name of the pipeline manager to publish to. Can be relative.
branches/branch/@pipelinestring The name of the pipeline to publish to. If missing, publishes to the default pipeline for the pipeline manager.
branches/branch/@allowRemoteboolean Indicates if this pipeline can be found on remote servers (see Distributed Processing for details).
branches/branch/@batchingboolean Indicates if the jobs processed by this pipeline should be marked for batch processing (useful for publishers or other components that support batch processing).
branches/branch/@batchSizeint The max size of the batches that the branch handler will created.
branches/branch/@batchTimeoutlong Time to wait before the batch is closed if the batchSize hasn't been reached.
branches/branch/@simultaneousBatchesint The max number of simultanous batches that will be handled by the branch handler.

 

SharePoint 2010 Specific Configuration

 

ElementTypeDefaultDescription
userNameStringusernameThe user name to connect to SharePoint with, if one is not given in the control job.
passwordStringsecretpasswordThe password to connect to SharePoint with, if one is not given in the control job.
domainstring Domain used to authenticate against SharePoint.
defaultDisplayNameStringSharePointThe name of the crawl, if one is not given in the control job.
groupPrefixSeparatorString@The separator inserted between the site URL and group name when extracting groups from sites.
snapshotDirString.The directory for snapshot files.
standardWebServicebooleanfalseUse standard SharePoint web services only.
waitForSubJobsTimeoutlong600000
(=10 mins)
Scanner time out while waiting for published jobs to complete.
allowLimitedAccessbooleanfalseIndicates if an ACL should be set as allow or deny on an item where the user has Limited Access.
scanRecursivelybooleanfalseIndicates whether the child containers should be scanned or not.
indexContainersbooleanfalseIndicates whether the container items should be indexed or not.
claimsAuthenticationbooleanfalseIndicates whether the group expansion should check for claims authentication or not
useLDAPCachebooleanfalseCheck for an installed "Aspire LDAP Cache" component for group expansion.
externalGroupServerPathstringemptyList of installed "Aspire LDAP Cache" components.


Example Configuration

 <component name="Scanner" subType="default" factoryName="aspire-sharepoint-connector">
  <debug>${debug}</debug>
  <domain>${DefaultDomain}</domain>
  <username>${DefaultUserName}</username>
  <password>${DefaultPassword}</password>
  <standardWebService>${standardWebService}</standardWebService>
  <groupPrefixSeparator>@</groupPrefixSeparator>
  <allowLimitedAccess>${allowLimitedAccess}</allowLimitedAccess>
  <claimsAuthentication>${claimsAuthentication}</claimsAuthentication>
  <snapshotDir>${snapshotDir}</snapshotDir>
  <scanRecursively>${scanRecursively}</scanRecursively>
  <indexContainers>${indexContainers}</indexContainers>
  <useLDAPCache>${useLDAPCache}</useLDAPCache>
  <externalGroupServerPath>${externalGroupServerPath}</externalGroupServerPath>
  <branches>
   <branch event="onAdd" pipelineManager="../ProcessPipelineManager" 
    pipeline="addUpdatePipeline" allowRemote="true" batching="true"
    batchSize="50" batchTimeout="60000" simultaneousBatches="2" />
   <branch event="onUpdate" pipelineManager="../ProcessPipelineManager"
    pipeline="addUpdatePipeline" allowRemote="true" batching="true"
    batchSize="50" batchTimeout="60000" simultaneousBatches="2" />
   <branch event="onDelete" pipelineManager="../ProcessPipelineManager"
    pipeline="deletePipeline" allowRemote="true" batching="true"
    batchSize="50" batchTimeout="60000" simultaneousBatches="2" />
  </branches>
</component>

 

Source Configuration


Scanner Control Configuration

The following table describes the list of attributes that the AspireObject of the incoming scanner job requires to correctly execute and control the flow of a scan process.

 

ElementTypeOptionsDescription
@actionstringstart, stop, pause, resume, abortControl command to tell the scanner which operation to perform. Use start option to launch a new crawl.
@actionPropertiesstringfull, incrementalWhen a start @action is received, it will tell the scanner to either run a full or an incremental crawl.
@normalizedCSNamestring Unique identifier name for the content source that will be crawled.
displayNamestring Display or friendly name for the content source that will be crawled.

Header Example

 

  <doc action="start" actionProperties="full" actionType="manual" crawlId="0" dbId="0" jobNumber="0" normalizedCSName="FeedOne_Connector"
   scheduleId="0" scheduler="##AspireSystemScheduler##" sourceName="ContentSourceName">
    ...
    <displayName>testSource</displayName>
    ...
  </doc>


All configuration properties described in this section are relative to /doc/connectorSource of the AspireObject of the incoming Job.

 

ElementTypeDefaultDescription
urlstring The URL to scan (allowed http or https).
usernamestring The username to connect to SharePoint with.
passwordstring The password to connect to SharePoint with.
domainstring Domain used to authenticate against SharePoint.
indexContainersbooleanfalsetrue if folders (as well as files) should be indexed.
scanRecursivelybooleanfalsetrue if subfolders of the given URL should be scanned.
fileNamePatterns/include/@patternregexnoneOptional. A regular expression pattern to evaluate file urls against; if the file name matches the pattern, the file is included by the scanner. Multiple include nodes can be added.
fileNamePatterns/include/@patternregexnoneOptional. A regular expression pattern to evaluate file urls against; if the file name matches the pattern, the file is excluded by the scanner. Multiple exclude nodes can be added.

Scanner Configuration Example

 

  <doc action="start" actionProperties="full" normalizedCSName="testFile" scheduleId="1">
    <connectorSource>
      <url>http://10.10.22.66</url>
      <username>auser</username>
      <domain>thedomain</domain>
      <password>secure_password</password>
      <indexContainers>true</indexContainers>
      <scanRecursively>true</scanRecursively>
      <fileNamePatterns>
        <include pattern=".*LSA.*"/>
        <exclude pattern=".*\.bak$"/>
      </fileNamePatterns>
    </connectorSource>
    <displayName>testFile</displayName>
  </doc>

 

Output


 

<doc>
  <url>http://10.10.23.89/docSite</url>
  <fetchUrl>http://10.10.23.89/docSite</fetchUrl>
  <displayUrl>http://10.10.23.89/docSite</displayUrl>
  <snapshotUrl>002 http://10.10.23.89/docSite</snapshotUrl>
  <repItemType>aspire/SPSite</repItemType>
  <docType>container</docType>
  <id>http://10.10.23.89/docSite</id>
  <spId>{192EE573-5ADB-40C5-A32A-965B2360997F}</spId>
  <lastModified>2014-01-30T01:34:25Z</lastModified>
  <Title>Documents Site</Title>
  <Author>System Account</Author>
  <Description>The documents site</Description>
  <NoIndex/>
  <sourceName>Sharepoint 2010</sourceName>
  <sourceType>sp</sourceType>
  <acls>
    <acl access="allow" domain="" entity="group" fullname="http://10.10.23.89@Test Members" name="http://10.10.23.89@Test Members" scope="global"/>
    <acl access="allow" domain="NT AUTHORITY" entity="user" fullname="NT AUTHORITY\LOCAL SERVICE" name="LOCAL SERVICE" scope="global"/>
    <acl access="allow" domain="NT AUTHORITY" entity="user" fullname="NT AUTHORITY\NETWORK SERVICE" name="NETWORK SERVICE" scope="global"/>
    <acl access="allow" domain="" entity="group" fullname="http://10.10.23.89@Test Visitors" name="http://10.10.23.89@Test Visitors" scope="global"/>
    <acl access="allow" domain="" entity="user" fullname="SP Farm" name="SP Farm" scope="global"/>
    <acl access="deny" domain="" entity="user" fullname="FASTAdmin" name="FASTAdmin" scope="global"/>
    <acl access="deny" domain="QA" entity="group" fullname="QA\sp_farm group" name="sp_farm group" scope="global"/>
    <acl access="deny" domain="" entity="group" fullname="http://10.10.23.89@Records Center Web Service Submitters for recordCenter" name="http://10.10.23.89@Records Center Web Service Submitters for recordCenter" scope="global"/>
    <acl access="deny" domain="" entity="group" fullname="http://10.10.23.89@Test Owners" name="http://10.10.23.89@Test Owners" scope="global"/>
    <acl access="deny" domain="" entity="user" fullname="System Account" name="System Account" scope="global"/>
  </acls>
  <connectorSource>
    <url>http://10.10.23.89</url>
    <domain>QA</domain>
    <username>sp_farm</username>
    <password>encrypted:562E81591F85B858E5A5D3876F9C9FDB</password>
    <standardWebService>false</standardWebService>
    <allowLimitedAccess>false</allowLimitedAccess>
    <claimsAuthentication>false</claimsAuthentication>
    <scanRecursively>true</scanRecursively>
    <indexContainers>true</indexContainers>
    <fileNamePatterns/>
    <displayName>Sharepoint 2010</displayName>
  </connectorSource>
  <action>add</action>
  <hierarchy>
    <item id="D409112AAA5F4E6160FCD598F78A7336" level="2" name="docSite" type="aspire/SPSite" url="http://10.10.23.89/docSite">
      <ancestors>
        <ancestor id="031FFB67B549BBB52613CCA03F1A085A" level="1" name="Sharepoint 2010" parent="true" type="aspire/SPSite" url="http://10.10.23.89"/>
      </ancestors>
    </item>
  </hierarchy>
  <content/>
</doc>