<body>

<h3>Table Of Contents</h3>
<li><a href="#spadaptor">SharePoint Adaptor</a></li>
<li><a href="#spuserprofileadaptor">SharePoint User Profile Adaptor</a></li>

<h3 id="spadaptor">Adaptor for SharePoint Deployment</h3>

<p>Each adaptor instance is only able to support one SharePoint Web Application.
Therefore, you will need to deploy one adaptor instance per Web Applicaton.

<h4>Requirements</h4>
<ul>
  <li>GSA 7.2 or higher
  <li>GSA user authentication configured for authentication system in use
    (typically Active Directory)
  <li>Java JRE on computer that runs adaptor (1.6u27 or higher for linux;
      Java JRE 1.7u6 or higher for windows)
  <li>SharePoint Adaptor JAR executable
  <li>User account for adaptor, with Full Read permissions to SharePoint Web
    Application in the User Policy
</ul>

<h4>Configure GSA for Adaptor</h4>
<ol>
  <li>Add the IP address of the computer that hosts the adaptor to the <b>List
    of Trusted IP Addresses</b> on the GSA.
    <p>In the GSA's Admin Console, go to <b>Content Sources &gt; Feeds</b>,
    and scroll down to <b>List of Trusted IP Addresses</b>. Add the IP address
    for the adaptor to the list.
  <li>Add the URLs provided by the adaptor to the <b>Follow Patterns</b> on the GSA.
    <p>In the Admin console, go to <b>Content Sources &gt; Web Crawl &gt; 
    Start and Block URLs</b>, and scroll down to <b>Follow Patterns</b>.
    Add an entry like <code>http://adaptor.example.com:5678/doc/
    </code> where <code>adaptor.example.com</code> is the hostname of the
    machine that hosts the adaptor. By default the adaptor runs on port 5678.
</ol>

<h4>Configure Adaptor</h4>
<ol>
  <li>Create a file named <code>adaptor-config.properties</code> in the
  directory that contains the adaptor binary. Within the file, provide the
  configuration (replacing bolded items with your real configuration):
  <pre>gsa.hostname=<b>yourgsa.example.com</b>
sharepoint.server=<b>http://yoursharepoint.example.com/</b></pre>

  <li>If the adaptor will <em>not</em> be running as the user account that has
  appropriate SharePoint permissions, then add these additional configuration
  options to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>YOURDOMAIN\\AdaptorUser</b>
sharepoint.password=<b>uS3R_passWoRD</b></pre>

  <li>Create a folder named <code>logs</code> in the same directory.

  <li>Create a file named <code>logging.properties</code> in the same directory
  that contains logging configuration:
  <pre>
.level=INFO
handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler
java.util.logging.FileHandler.formatter=com.google.enterprise.adaptor.CustomFormatter
java.util.logging.FileHandler.pattern=logs/adaptor.%g.log
java.util.logging.FileHandler.limit=10485760
java.util.logging.FileHandler.count=20
java.util.logging.ConsoleHandler.formatter=com.google.enterprise.adaptor.CustomFormatter</pre>

  <li>Run the adaptor using cmd.exe:
  <pre>java -Djava.util.logging.config.file=logging.properties -jar adaptor-sharepoint-YYYYMMDD-withlib.jar</pre>
</ol>

<h4>Running as a service</h4>
  <p>Example service creation on Windows with prunsrv:
  <pre>prunsrv install adaptor-sharepoint --StartPath="%CD%" ^
  --Classpath=adaptor-sharepoint-YYYYMMDD-withlib.jar ^
  --StartMode=jvm --StartClass=com.google.enterprise.adaptor.Daemon ^
  --StartMethod=serviceStart --StartParams=com.google.enterprise.adaptor.sharepoint.SharePointAdaptor
  --StopMode=jvm --StopClass=com.google.enterprise.adaptor.Daemon ^
  --StopMethod=serviceStop --StdOutput=stdout.log --StdError=stderr.log ^
  ++JvmOptions=-Djava.util.logging.config.file=logging.properties</pre>

  <p>Example execution on Linux with jsvc:
  <pre>jsvc -pidfile adaptor.pid -cp adaptor-sharepoint-YYYYMMDD-withlib.jar com.google.enterprise.adaptor.Daemon com.google.enterprise.adaptor.sharepoint.SharePointAdaptor</pre>

<h4>Optional <code>adaptor-config.properties</code> fields</h4>
<dl>
  <dt>
  <code>sharepoint.xmlValidation</code>
  </dt>
  <dd>
  Whether to enable strict checking of XML
  responses using the expected schema.
  Defaults to false.
  </dd>
  <dt>
  <code>sharepoint.maxIndexableSize</code>
  </dt>
  <dd>
  Number of bytes of a document that GSA indexes.  Defaults to 2097152.
  </dd>
  <dt>
  <dt>
  <code>adaptor.namespace</code>
  </dt>
  <dd>
  Namespace used for ACLs sent to GSA.  Defaults to "Default".
  </dd>
</dl>

<br>
<!-- SPUP -->
<h3 id="spuserprofileadaptor">Adaptor for SharePoint User Profiles Deployment</h3>

<p>Each adaptor instance is only able to support one User Profile Service 
Application. Therefore, you will need to deploy one adaptor instance per User 
Profile Service Application.

<h4>Requirements</h4>
<ul>
  <li>GSA 7.0 P1 or higher
  <li>GSA user authentication configured for authentication system in use
    (typically Active Directory)
  <li>Java JRE on computer that runs adaptor (1.6u27 or higher for linux;
      Java JRE 1.7u6 or higher for windows)
  <li>SharePoint User Profile Adaptor JAR executable
  <li>User account for adaptor, with Full Control permissions to SharePoint User
      Profile Service Application
</ul>

<h4>Configure GSA for Adaptor</h4>
<ol>
  <li>Add the IP address of the computer that hosts the adaptor to the <b>List
    of Trusted IP Addresses</b> on the GSA.
    <p>In the GSA's Admin Console, go to <b>Content Sources &gt; Feeds</b>,
    and scroll down to <b>List of Trusted IP Addresses</b>. Add the IP address
    for the adaptor to the list.
  <li>Add the URLs provided by the adaptor to the <b>Follow Patterns</b> on the GSA.
    <p>In the Admin console, go to <b>Content Sources &gt; Web Crawl &gt; 
    Start and Block URLs</b>, and scroll down to <b>Follow Patterns</b>.
    Add an entry like <code>http://adaptor.example.com:5678/doc/
    </code> where <code>adaptor.example.com</code> is the hostname of the
    machine that hosts the adaptor. By default the adaptor runs on port 5678.
  <li>Create and configure a new result collection for user profile documents.
    <p>In the Admin console, go to <b>Index &gt; Collections</b>, in the
    <b>Create New Collection</b> section specify a unique name for the new
    collection. Select <b>Empty</b> for <b>Initial Configuration</b> and click
    <b>Create</b>.
    <p>Then, in the <b>Current Collections</b> section click <b>Edit</b> for the
    newly-created user profile collection. In the <b>Include Content Matching
    the Following Patterns</b> box, add the URL pattern for the adaptor as used
    in step 2 and click <b>Save</b>.
  <li>Configure the default_collection to exclude user profile documents.
    <p>In the Admin console at <b>Index &gt; Collection</b>, in the <b>Current
    Collections</b> section click <b>Edit</b> for
    <code>default_collection</code>. In the <b>Do Not Include Content Matching
    the Following Patterns</b> box, add the URL pattern for the adaptor as used
    in step 2 and click <b>Save</b>.
</ol>

<h4>Configure Adaptor</h4>
<ol>
  <li>Create a file named <code>adaptor-config.properties</code> in the
  directory that contains the adaptor binary. Within the file, provide the
  configuration (replacing bolded items with your real configuration):
  <pre>gsa.hostname=<b>yourgsa.example.com</b>
sharepoint.server=<b>http://yoursharepoint.example.com/</b></pre>

  <li>If the adaptor will <em>not</em> be running as the user account that has
  appropriate SharePoint permissions, then add these additional configuration
  options to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>YOURDOMAIN\\AdaptorUser</b>
sharepoint.password=<b>uS3R_passWoRD</b></pre>

  <li>Create a folder named <code>logs</code> in the same directory.

  <li>Create a file named <code>logging.properties</code> in the same directory
  that contains logging configuration:
  <pre>
.level=INFO
handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler
java.util.logging.FileHandler.formatter=com.google.enterprise.adaptor.CustomFormatter
java.util.logging.FileHandler.pattern=logs/adaptor.%g.log
java.util.logging.FileHandler.limit=10485760
java.util.logging.FileHandler.count=20
java.util.logging.ConsoleHandler.formatter=com.google.enterprise.adaptor.CustomFormatter</pre>

  <li>Run the adaptor using cmd.exe:
  <pre>java -Djava.util.logging.config.file=logging.properties -jar adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar</pre>
</ol>

<h4>Running as a service</h4>
  <p>Example service creation on Windows with prunsrv:
  <pre>prunsrv install adaptor-sharepoint-user-profile --StartPath="%CD%" ^
  --Classpath=adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar ^
  --StartMode=jvm --StartClass=com.google.enterprise.adaptor.Daemon ^
  --StartMethod=serviceStart --StartParams=com.google.enterprise.adaptor.sharepoint.SharePointUserProfileAdaptor
  --StopMode=jvm --StopClass=com.google.enterprise.adaptor.Daemon ^
  --StopMethod=serviceStop --StdOutput=stdout.log --StdError=stderr.log ^
  ++JvmOptions=-Djava.util.logging.config.file=logging.properties</pre>

  <p>Example execution on Linux with jsvc:
  <pre>jsvc -pidfile adaptor.pid -cp adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar com.google.enterprise.adaptor.Daemon com.google.enterprise.adaptor.sharepoint.SharePointUserProfileAdaptor</pre>

<h4>Optional <code>adaptor-config.properties</code> fields</h4>
<dl>
  <dt>
  <code>profile.setacl</code>
  </dt>
  <dd>
    Whether user profile information is considered restricted
    or public. Defaults to true.
  </dd>
  <dt>
  <code>profile.mysitehost</code>
  </dt>
  <dd>
    Defaults to virtual server.
  </dd>
  <dt>
  <dt>
  <code>adaptor.namespace</code>
  </dt>
  <dd>
  Namespace used for ACLs sent to GSA.  Defaults to "Default".
  </dd>
</dl>

</body>
