Domain migration for SharePoint

Due to merging exercises, my customer needed to change their domain from abc.com to cde.com. As such all services that depends on Active Directory will be impacted including Exchange, Lync and SharePoint.

There is no clear cut way documented anywhere by Microsoft on how to do this, and this is not a “turn the switch” exercise. This requires planning and testing as per any SharePoint migration or upgrade project.

After following thru some blogs online, I roughly broken down the total effort including setting up a staging environment to prove the migration will be as below.

effort

Below are links that helped me came to this decision

http://blogs.technet.com/b/sushrao/archive/2011/12/02/sharepoint-migrating-sharepoint-server-from-one-domain-to-another.aspx

http://www.falconitservices.com/support/KB/Lists/Posts/Post.aspx?ID=194

http://social.technet.microsoft.com/Forums/sharepoint/en-US/d3c5f5b8-5629-4a53-b141-2ed048a87e0e/moving-sharepoint-2010-to-a-new-domain?forum=sharepointadminprevious

SharePoint 2013 Executing REST API on the browser

SharePoint 2013 provides REST API via _api/web interface. You can try it out in your browser by typing http://{your site}/_api/web

However if you are using IE, you get a nasty reply that looks like below screenshot

Screen Shot 2012-12-27 at 12.06.15 AM

Basically IE comes with a feed reader that doesn’t render the REST feed properly. You can turn off this reader by going to Internet Options –> Content then click on Settings under Feeds and Web Slices section. Make sure Turn on feed reading view is unchecked

Screen Shot 2012-12-27 at 12.13.09 AM

Then restart IE and see your REST call renders nicely on IE

Screen Shot 2012-12-27 at 12.14.00 AM

App for SharePoint 2013 – Unable to login to app site even after credential prompt

When you deploy or debug an app for SharePoint, you will get multiple user credential challenge [in my case I am using NTLM authentication] but fail to login. This is caused by the loopback check feature exists since Windows Server 2003 SP1. To disable this loopback check, open up powershell and execute the following command. Note: Do this only on your development machine.

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -Value "1" -PropertyType dword

Setting up SharePoint 2013 for Apps Development

This post shows how to create the nessacery service applications for SharePoint Apps.

However when I click on Configure Apps URLs on Central Administration site, I got a “the subscription settings service and corresponding application… ” error message and cannot proceed. It turns out I also need to create a Subscription Service Application shown in the post below

http://blogs.technet.com/b/speschka/archive/2012/07/23/setting-up-the-subscription-settings-service-application-in-sharepoint-2013.aspx

 

Sharing SharePoint 2010 and ASP.NET 4.0 User Credential

Many people have their custom ASP.NET application embedded as a IFRAME inside SharePoint. When you do this, you might also want to take advantage of creating a ‘Single Sign On’ experience for your users so that the ASP.NET doesn’t challenge the user for password again. You can make use of SharePoint SSO to achieve this but if you are using SharePoint 2010 Foundation you will run into problem so this is a solution I found online that works.

I got the guide from this French blog and got Google to translate for me. Certain parts are not clear [due to mistake in translation] so I repost it here

Create a new App Pool that share the same User Credential with the SharePoint site.

Copy the content of your ASP.NET 4.0 web app into a folder under the SharePoint site. In my case it will be C:\inetpub\wwwroot\wss\VirtualDirectories\8080\

Inside IIS Manager convert this folder into a web application.

Go inside C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG and open the Web.config (.NET version here maybe different)

Before anything else right after the <?xml> opening node add the following (in case you dont have configSections defined already, else append to it)

<configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
        </sectionGroup>
      </sectionGroup>
    </sectionGroup>
  </configSections>

After that go to the web.config of the SharePoint site, comment out the exactly same whole secion of <sectionGroup name=”system.web.extensions”> that you
pasted just now. Leave the other sections group untouched

Surround the following nodes with this

<location path="." inheritInChildApplications="false"></location>
<microsoft.sharepoint.client>
<SharePoint>
<system.web>

This will let the child web app to use it’s own settings

Go to the child web app, change the following

<modules runAllManagedModulesForAllRequests="true"/>

TO

 <modules runAllManagedModulesForAllRequests="true">
      <remove name= "SPRequestModule"/>
      <remove name= "PublishingHttpModule"/>
      <remove name= "RSRedirectModule"/>
      <remove name= "StateServiceModule"/>
      <remove name = "SharePoint14Module"/>
      <add name= "Session" type="System.Web.SessionState.SessionStateModule" />
    </modules>

This will disable all SharePoint modules in the child web app and enable back session

After that do IISRest and everything should be working. But if you got error 500 or a blank page please refer to this page on how to debug