<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jithin's SharePoint Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jijoseph/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jijoseph/feed.xml</link>
    <description>Microsoft | SharePoint Engineer</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:35:09 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>OOS Integration with SharePoint Server 2013/2016</title>
      <link>https://docs.microsoft.com/archive/blogs/jijoseph/oos-integration-with-sharepoint-server-20132016</link>
      <pubDate>Fri, 02 Mar 2018 02:54:09 GMT</pubDate>
      <dc:creator><![CDATA[Jithin Joseph [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jijoseph/?p=155</guid>
      <description><![CDATA[In this article I have put together the basic steps to configure a basic Office Online Server Farm...]]></description>
      <content:encoded><![CDATA[<span style="font-size: 12pt">In this article I have put together the basic steps to configure a basic Office Online Server Farm and integrate it with SharePoint 2013/2016 Farm.
</span>

<span style="font-size: 12pt">The steps given are on the assumption that you have a SharePoint 2013/2016 Farm installed, configured, up and running.
</span>
<ol>
 	<li><span style="font-size: 14pt"><strong>First Step is to install pre-requisites and enable required roles and features for Office online Server:
</strong></span></li>
</ol>
<span style="font-size: 12pt">OOS Prerequisites, resource planning guidelines can be found here: <a href="https://docs.microsoft.com/en-us/officeonlineserver/plan-office-online-server">OOS Planning</a>. Please read through this article before you deploy OOS.
</span>

<span style="font-size: 12pt">       Once you are done through planning, deploying VM's with suitable hardware and ready to deploy OOS, proceed to next step.
</span>

<span style="font-size: 12pt"><span style="font-size: 12pt"><strong>        a. Enable the required Roles and Features on the Server.
</strong></span></span>

<span style="font-size: 12pt">         There are certain roles and features required on the Servers to deploy OOS. Follow the PS commands below for enabling these roles and features.
</span>

<span style="font-size: 12pt">Open Windows Powershell as administrator and run following command.
</span>

<span style="font-size: 12pt"><strong>For Windows Server 2012 R2:</strong>
</span>
<pre><span style="font-size: 10pt;color: #4472c4"> <strong>Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation
 </strong></span></pre>
<span style="font-size: 12pt"><strong>For Windows Server 2016:</strong>
</span>
<pre><span style="font-size: 10pt;color: #4472c4"> <strong>Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,NET-Framework-Features,NET-Framework-45-Features,NET-Framework-Core,NET-Framework-45-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation</strong>
 </span></pre>
<span style="font-size: 12pt">Once prompted, restart the server.
</span>

<img width="1215" height="87" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/030118_0010_OOSIntegrat1.png" /><span style="font-size: 12pt"><strong></strong></span>

<span style="font-size: 12pt"><strong>      b. Install the pre-requisites:
</strong></span><span style="font-size: 12pt"><strong><span style="font-size: 12pt"></span></strong></span>

<span style="font-size: 12pt"><span style="font-size: 12pt">       Install the following pre-requisites:</span><strong><span style="font-size: 12pt">
</span></strong></span>
<ul>
 	<li><span style="font-size: 12pt"><span style="font-size: 12pt"><a href="https://go.microsoft.com/fwlink/p/?LinkId=510096"><span style="font-size: 12pt">NET Framework 4.5.2</span></a></span><span style="font-size: 12pt"><span style="font-size: 12pt"> (If .Net Framework 4.5.2 or later is already installed, you can ignore this)</span></span></span></li>
 	<li><a href="https://www.microsoft.com/en-us/download/details.aspx?id=40784"><span style="font-size: 12pt">Visual C++ Redistributable Packages for Visual Studio 2013</span></a><span style="font-size: 12pt">
</span></li>
 	<li><a href="https://www.microsoft.com/en-us/download/details.aspx?id=48145"><span style="font-size: 12pt">Visual C++ Redistributable for Visual Studio 2015</span></a><span style="font-size: 12pt">
</span></li>
 	<li><a href="https://go.microsoft.com/fwlink/p/?LinkId=620072"><span style="font-size: 12pt">Microsoft.IdentityModel.Extention.dll</span></a><span style="font-size: 12pt">
</span></li>
</ul>
<span style="font-size: 12pt">       Repeat the installation process on all servers that need to be added to OOS Farm.
</span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><strong>    </strong>2.  <strong>Install Office Online Server and language packs for OOS:</strong></span></span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><strong>    </strong></span></span><span style="font-size: 12pt"><span style="font-size: 14pt"><strong><span style="font-size: 12pt"><strong>      a. Download and install OOS:</strong></span></strong></span></span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><strong><span style="font-size: 12pt"><strong>          </strong></span></strong></span></span><span style="font-size: 12pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt">Download OOS from <a href="https://go.microsoft.com/fwlink/p/?LinkId=256561">VLSC Portal</a></span></span><span style="font-size: 12pt"><span style="font-size: 12pt">. Download is located under Office Products. Once downloaded, install OOS by running setup.exe.</span></span><strong><span style="font-size: 12pt"><strong><span style="font-size: 12pt">      </span></strong></span></strong></span></span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><strong><span style="font-size: 12pt"><strong><span style="font-size: 12pt"><span style="font-size: 12pt"><strong>           b. Download and install OOS Server Language Packs:</strong></span></span></strong></span></strong></span></span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">          </span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">Download and install Office Online Server Language Packs from <a href="https://go.microsoft.com/fwlink/p/?LinkId=798136">here</a></span></span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">.</span></span></span></span><strong><span style="font-size: 12pt"><strong><span style="font-size: 12pt"><span style="font-size: 12pt"><strong><span style="font-size: 12pt">
</span></strong></span></span></strong></span></strong></span></span><span style="font-size: 12pt"></span>

<span style="font-size: 12pt">Repeat the installation process on all servers that need to be added to OOS Farm.
</span>

<span style="font-size: 12pt"><span style="font-size: 14pt"><strong>    </strong>3.<strong>  Deploy the Office Online Server Farm:  </strong></span><span style="font-size: 12pt">
</span></span>

<span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">      We can either have a multi-server load balanced farm that uses HTTPS or a single-server farm that uses HTTP or HTTPS. </span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><strong>New-OfficeWebAppsFarm</strong> is the command used to configure an OOS Farm.
</span></span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="color: red"><strong></strong></span></span></span></span></span></span>

<span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="color: red"><strong>Note:</strong> </span>Various parameters that can be used is explained here: <a href="https://technet.microsoft.com/en-us/library/jj219436.aspx">New-OfficeWebAppsFarm</a>
</span></span></span></span></span>

<span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">If Windows PowerShell Prompt doesn't recognize New-SPWebAppsFarm command, you need to run "Import-Module -Name OfficeWebApps"
</span></span></span></span></span></span>

<span style="font-size: 12pt"><strong>              a. For configuring a single-server farm that use HTTP, run the following command:   </strong></span>
<pre><span style="font-size: 12pt"><strong><span style="color: #4472c4"><strong>         New-OfficeWebAppsFarm -InternalURL "https://servername" -AllowHttp -EditingEnabled</strong></span></strong></span></pre>
<ol>
 	<li style="list-style-type: none">
<p style="margin-left: 18pt"><span style="font-size: 12pt"> To verify that the Farm is created, we can try opening the Wopi Discovery XML file by accessing URL: <a href="https://servername/hosting/discovery">https://servername/hosting/discovery</a>
</span></p>
<p style="margin-left: 18pt"><span style="font-size: 12pt">    <span style="color: red"><strong>Note: </strong></span>Configuring OOS Farm using HTTP is not recommended for Production Farms.</span></p>
<p style="margin-left: 18pt"><span style="font-size: 12pt"></span><span style="font-size: 12pt"><strong>b.</strong> <span><strong>For configuring a single-server farm that use HTTPS, run the following command</strong></span></span></p>
</li>
 	<li style="list-style-type: none">
<pre style="margin-left: 18pt"><span style="color: #4472c4;font-size: 10pt"><strong>New-OfficeWebAppsFarm -InternalUrl "https://server.yourdomain.com" -ExternalUrl "https://hostname.yourdomain.com" -CertificateName "OfficeWebApps Certificate" -EditingEnabled
 </strong></span></pre>
<p style="margin-left: 18pt"><span style="font-size: 12pt">Note that -External URL is the URL that should be accessible on internet and -Internal URL is the FQDN of the OOS Server.
</span></p>
<p style="margin-left: 18pt"><span style="font-size: 12pt">Do not use Self Signed Certificate here. Use a Certificate obtained from a valid Certificate Authority.
</span></p>
<p style="margin-left: 18pt"><span style="font-size: 12pt">To verify that the OOS Farm is created, access the URL: <a href="https://server.yourdomain.com/hosting/discovery">https://server.yourdomain.com/hosting/discovery</a>. The WOPI Discovery XML File should be accessible.</span></p>

<div><span style="font-size: 12pt"><strong>      c. For configuring a multi-server load balanced OOS Farm using HTTPS:
</strong></span></div>
<span style="font-size: 12pt">       On the First Server in the Farm run the following command:
</span>
<pre><span style="color: #4472c4"><strong>      New-OfficeWebAppsFarm -InternalUrl "https://server.yourdomain.com" -ExternalUrl "https://hostname.yourdomain.com" -SSLOffloaded -EditingEnabled
 </strong></span></pre>
<span style="font-size: 12pt">      This is in assumption that you have SSL Offloading in place on NLB and certificates are placed on NLB.
</span>

<span style="font-size: 12pt">       On the remaining servers which you want to join to this OOS farm, run the following command:
</span>
<pre><span style="color: #4472c4"><strong>     New-OfficeWebAppsMachine -MachineToJoin "server1.yourdomain.com"
 </strong></span></pre>
<span style="font-size: 12pt"><span style="color: red"><strong>Note: </strong></span>We need to include -EditingEnabled in the New-OfficeWebAppsFarm command line to enable users to edit the documents.
</span>

<span style="font-size: 12pt">Once the Servers are joined to the farm, we are good to integrate the SharePoint Farm and OOS Farm.</span></li>
 	<li style="list-style-type: none"><span style="font-size: 12pt"></span><span style="font-size: 14pt">4.<strong> Integrating OOS with your SharePoint Farm:
</strong></span></li>
 	<li style="list-style-type: none"><span style="font-size: 14pt"><strong></strong></span><span style="font-size: 12pt">Once you have the OOS Farm up, you can proceed integrating SharePoint Farm with OOS. Please note that you need to have claims aware web applications for the Office Online rendering and editing to work. Also make a note that System Account won't be able to preview or open the document via OOS. Make sure you use an account other that the System Account.</span></li>
 	<li style="list-style-type: none"><span style="font-size: 12pt"><strong>    a. If you have a single-server OOS Farm that use HTTP:
</strong></span><span style="font-size: 12pt">         Open SharePoint Management shell using Administrator and run the following command:
</span>
<pre><span style="color: #4472c4"><strong>         New-SPWOPIBinding -ServerName &lt;OOSServerName&gt; -AllowHTTP
 </strong></span></pre>
<span style="font-size: 12pt">     Since you are using HTTP to communicate to the host in OOS(see step 3.a), the WopiZone should be specified as HTTP.
</span><span style="font-size: 12pt">     To verify which zone you are using in SharePoint, use command Get-SPWopiZone. If the output returned for this command is internal-https, change it to internal-http by running the following command:
</span>
<pre><span style="color: #4472c4"><strong>        Set-SPWOPIZone -zone "internal-http"
 </strong></span></pre>
<span style="font-size: 12pt">  Also, since you are using HTTP, we need to allow OAuth over HTTP in the security token config as well.
</span></li>
</ol>
<span style="font-size: 12pt">            Check what is set in your farm by running (Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp
</span>

<span style="font-size: 12pt">            If it returns false, set it to true by running following command:
</span>
<pre><span style="font-size: 12pt">             </span><span style="color: #4472c4"><strong>$config = (Get-SPSecurityTokenServiceConfig)
 </strong></span>

<span style="color: #4472c4"><strong>                $config.AllowOAuthOverHttp = $true
 </strong></span>

<span style="color: #4472c4"><strong>                $config.Update()
 </strong></span></pre>
<span style="font-size: 12pt"><strong>             b. If you have single-server or multi-server OOS Farm that use HTTPS:</strong></span>

<span style="font-size: 12pt">              For adding a new binding run the following command, where OOSServerhostname is the <strong>hostname specified in the internal url</strong></span>
<pre><span style="font-size: 12pt"><strong><span style="color: #4472c4"><strong>              New-SPWOPIBinding -ServerName &lt;OOSServerhostname&gt;</strong></span></strong></span></pre>
If SharePoint Farm is used externally as well, you will have to set the WopiZone to external-https. You can use the following command to change the zone as required:
<pre><span style="color: #4472c4"><strong>                 Set-SPWOPIZone -zone "external-https"
 </strong></span></pre>
In case you want to disjoin a SharePoint Farm from OOS Farm, use the command below:
<pre><span style="color: #4472c4"><strong>                 Remove-SPWOPIBinding -All:$true
 </strong></span></pre>
<span style="color: red"><strong>Note:</strong></span>

Please note that steps given above are for basic OOS Setup. Additional configuration will be needed for Excel Online, Scheduled Data Refresh etc… Please refer the following articles for details on this.

Ref: <a href="https://docs.microsoft.com/en-us/officeonlineserver/configure-excel-online-administrative-settings">https://docs.microsoft.com/en-us/officeonlineserver/configure-excel-online-administrative-settings</a>

<a href="https://docs.microsoft.com/en-us/officeonlineserver/configure-office-online-server-for-sharepoint-server-2016/configure-office-online-server-for-sharepoint-server-2016">https://docs.microsoft.com/en-us/officeonlineserver/configure-office-online-server-for-sharepoint-server-2016/configure-office-online-server-for-sharepoint-server-2016#step-4-enable-the-excel-soap-api</a>
<p style="margin-left: 72pt"><span style="color: #4472c4"><strong>
</strong></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Arithmetic operation resulted in an overflow exception while modifying Search Topology in SharePoint Farm</title>
      <link>https://docs.microsoft.com/archive/blogs/jijoseph/arithmetic-operation-resulted-in-an-overflow-exception-while-modifying-search-topology</link>
      <pubDate>Wed, 31 Jan 2018 03:04:02 GMT</pubDate>
      <dc:creator><![CDATA[Jithin Joseph [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jijoseph/?p=75</guid>
      <description><![CDATA[Symptom
While applying changes to the Search Topology, the following error is generated "Errors were...]]></description>
      <content:encoded><![CDATA[<p><span style="color:black;font-size:24pt">Symptom
</span></p><p><span style="color:black;font-size:14pt">While applying changes to the Search Topology, the following error is generated "Errors were encountered during the configuration of the Search service application" and the following traces will be populated in ULS "System.OverflowException: Arithmetic operation resulted in an overflow"
</span></p><p>
 </p><p><span style="color:black;font-size:14pt">ULS Stack:
</span></p><p><span style="color:black">SearchConfigWizardFinish page failed with exception. System.OverflowException: Arithmetic operation resulted in an overflow.    Server stack trace:     <br />  at Microsoft.Office.Server.Search.Administration.UnsafeNativeMethods.NetLocalGroupGetMembers(String groupName)    <br />  at Microsoft.Office.Server.Search.Administration.UnsafeNativeMethods.TraceLocalGroups()    <br />  at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Provision()    <br />  at Microsoft.Office.Server.Search.Administration.SearchAdminUtils.DeployLocalServiceInstance[T](T localSearchServiceInstance)    <br />  at Microsoft.Office.Server.Search.Administration.SearchConfigurationJobDefinition.Create(AbstractSearchConfigWizard wizardOM)    <br />  at Microsoft.Office.Server.Search.Internal.UI.SearchConfigWizardFinish.ExecuteConfigurationTimerJob(SPLongOperationState longOperationState, String&amp; strRedirectPage)    <br />  at Microsoft.SharePoint.SPStatefulLongOperation.SetThreadCultureAndRun(RunStatefulOperation runOperation, SPLongOperationState state, CultureInfo culture, CultureInfo uICulture)    <br />  at Microsoft.SharePoint.SPStatefulLongOperation.&lt;&gt;c__DisplayClass6.&lt;Run&gt;b__0(Object state)    <br />  at Microsoft.SharePoint.Utilities.SPThreadPool.WaitCallbackWrapper(Object state)    <br />  at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]&amp; outArgs)    <br />  at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)    Exception rethrown<br /> at [0]:     <br />  at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)    <br />  at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData&amp; msgData)    <br />  at System.Threading.WaitCallback.EndInvoke(IAsyncResult result)    <br />  at Microsoft.SharePoint.Utilities.SPThreadPool.RunAsyncWorkItem(ImpersonatedCallbackParam param, TimerCallback timerCallback, Object timerState, Int32 timerPeriod)    <br />  at Microsoft.SharePoint.Utilities.SPThreadPool.RunAsyncWorkItemWithImpersonation(WaitCallback workItemCallback, Object workItemState, TimerCallback timerCallback, Object timerState, Int32 timerPeriod)    <br />  at Microsoft.SharePoint.SPStatefulLongOperation.Run(RunStatefulOperation runOperation)    <br />  at<span style="font-family:Tahoma">
			</span>Microsoft.Office.Server.Search.Internal.UI.SearchConfigWizardFinish.&lt;&gt;c__DisplayClass2.&lt;Commit&gt;b__0(SPStatefulLongOperation longOperation)<span style="font-family:Tahoma"> 
</span></span></p><p>
 </p><p><span style="color:black;font-size:24pt">Cause
</span></p><p><span style="color:black"><span style="font-size:14pt">The error was thrown at </span><span style="font-size:12pt;background-color:yellow">Microsoft.Office.Server.Search.Administration.UnsafeNativeMethods.NetLocalGroupGetMembers(String groupName)</span><span style="font-size:14pt">. From this we could figure out that it errors out while enumerating members of one of the local group.  On a closer review of the ULS logs I was able to figure out the problematic group:
</span></span></p><p>
 </p><p><span style="color:black"><em>w3wp.exe (0x0C3C) 0x16CC SharePoint Server Search Administration dmg1 High Group <span style="background-color:yellow">WSS_WPG</span>
			</em></span></p><p><span style="color:black"><br /> w3wp.exe (0x0C3C) 0x16CC SharePoint Server Search Administration dmb2 High The call to SearchServiceInstance.Provision (server 'servername') failed. Setting back to previous status 'Disabled'. System.OverflowException: Arithmetic operation resulted in an overflow.     at Microsoft.Office.Server.Search.Administration.UnsafeNativeMethods.NetLocalGroupGetMembers(String groupName)     at Microsoft.Office.Server.Search.Administration.UnsafeNativeMethods.TraceLocalGroups()     at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Provision()     at Microsoft.Office.Server.Search.Administration.SearchAdminUtils.DeployLocalServiceInstance[T](T localSearchServiceInstance)
</span></p><p><span style="color:black;font-size:14pt">The issue was caused due to the substantial number of users added to the WSS_WPG group.
</span></p><p><span style="color:black;font-size:24pt">Resolution
</span></p><p><span style="color:black;font-size:14pt">Removed the individual users from WSS_WPG group. If you want to add the users to WSS_WPG group, create an AD Security Group, add the users to this SG and add the SG to the WSS_WPG group.
</span></p><p>
 </p><p><span style="color:black;font-size:12pt">Applies to: SharePoint Server 2013, SharePoint Server 2016
</span></p><p>
 </p><p><span style="color:black">
		</span> </p>]]></content:encoded>
    </item>
  </channel>
</rss>