Alternatives to IE "Open in Explorer" ribbon for SharePoint Online Document libraries.

 

Are you concerned IE will soon be deprecated & removed soon and you will lose the functionality Open in Explorer” for SharePoint Online Document Libraries.

Fig : Image Chrome browser showing Open in Explorer is disabled.



Well there are alternatives for Chrome and Edge browsers. You can now install “IE Tab” extensions for Chrome and Edge and emulate internet explorer inside chrome and Edge and use the functionality “Open in Explorer following are the steps.

 

1.      Install extension IE Tab for Chrome / Edge (chrome extension link /Microsoft Edge Addons.

2.      Open your library in classic SharePoint mode and click IE Tab to launch emulation of IE as shown below.

Fig : Emulation of IE and ribbon “open in Explorer” is enabled.


 

 

 

 


Home Page

 


Welcome to my technical blog.  you will find technical articles related to sharepoint and Power Platform; It is still under construction; please send me feed back to mahesh_r77@yahoo.com 




Power Apps

 



Power Apps is a suite of apps, services, connectors and data platform that provides a rapid application development environment to build custom apps for your business needs. Using Power Apps, you can quickly build custom business apps that connect to your business data stored either in the underlying data platform (Microsoft Dataverseor in various online and on-premises data sources (SharePoint, Microsoft 365, Dynamics 365, SQL Server, and so on).





Power Automate

 




CONTENT IS UNDER CONSTRUCTION.

Power BI

 




CONTENT IS UNDER CONSTRUCTION.


Power Platform

 






Power Platform combines the robust power of PowerAppsPowerBI, and Microsoft Flow into one powerful business application platform –  providing quick and easy app building and data insights. Each component of the Microsoft Power Platform is built on the the Common Data Service for Apps. Each component is dynamic by itself, but brilliant and masterful when combined.



PowerApps

PowerApps build on the platform of CDS and Flow to allow citizen developers to build easy to use applications for standard business needs. For example, you want to build an app for representatives to inspect your companies franchises. A Power App could be built and made available on the rep’s phone that surfaces your survey and inspection questions. The rep could visit the franchise and quickly fill out the data from their phone. This data is then stored in the CDS. Flow would trigger notifications of tasks identified to repair defects at the franchises. And PowerBI dashboards would allow you to rank stores against each other.

Microsoft has moved administration of the Power Platform out of Office 365 and to its own site, You can access the administration site at https://admin.powerplatform.microsoft.com/ You can also start free trials for all of these services at the same URL.

Microsoft Flow

Microsoft Flow is a service that helps you to create automated workflows between apps and services. These workflows can be used to integrate and update data, synchronize files, get notifications and more. There are over 200 apps and services, including Common Data Service for Apps, that work with Microsoft Flow today and that number is always growing.

Common Data Service / DataVerse

The heart of the Microsoft Power Platform is the Common Data Service for Apps(CDS). CDS is a secure database hosted in Azure Cloud prebuilt with a standard set of entities and record types. These record types – for example, Accounts, Contacts, and various activity types are extensible – so you can add additional data fields. Developers can also add new entities to fit their business needs. Entities have relationships to each other, and Business Rules can be created to make fields required, to hide fields and to set default values.

PowerBI

PowerBI is a business analytics service provided by Microsoft. Using data stored in CDS or other databases, users can build informative reports and dashboards to display important data about sales, customer service, and other business functions. These dashboards and reports can be published on websites, in SharePoint or Teams, and in Apps.




How to get SharePoint Online Group Sites URL & Owners from tenant!


My client implemented SharePoint Online;  One of the new feature of SharePoint Online is Users can create Group Sites(Team or Communication) Collection without any approval Process. There were more than 2000 Group Sites created by users across the organization.
Step 1: Is to get a report of how many sites are created by users by department, location details.
Step 2: is to implement some kind of governance related to who can create the Group Sites.

The following script is to extract Information regarding Group Site like  Title, URL, Created By, Location and export it to CSV.



$host.Runspace.ThreadOptions = "ReuseThread" #Definition of the function that allows to get all the members of all the Office 365 Groups in a tenant function Get-GroupsSites { <# .SYNOPSIS Gets all the Owners who created groups and details into a CSV file. .DESCRIPTION The function connects to tenant with Admin credentials and loops through each Groups. .EXAMPLE .\Get-GroupSites -$OutDirectoryPath "C:\temp" # the out put is found in the C:\temp\GroupSites.csv .NOTES Important to pass correct parameter example 'c:\temp' for the funciton to execute. #> param( [string] [Parameter(Mandatory=$true)] $OutDirectoryPath ) #Initialise all the tenant variables. $tenantUrl = "https://sptest-admin.sharepoint.com/" # $username = 'admin@sptest.test.com' # $password = ConvertTo-SecureString -String 'XXXXXX' -AsPlainText -Force $O365Cred= New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $username,$password Connect-AzureAD -Credential $O365Cred Connect-MsolService -Credential $O365Cred $PSSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $O365Cred -Authentication Basic -AllowRedirection Import-PSSession $PSSession Write-host "Getting Groups now.." Try { #Getting all the Office 365 Groups in the tenant Write-Host "Getting all the users who created each O365 Group in the tenant ..." -foregroundcolor Green $O365Groups = Get-UnifiedGroup $OutPut = foreach ($O365Group in $O365Groups) { $usr = Get-Recipient -Identity $O365Group.ManagedBy[0] $msg = $O365Group.DisplayName + ',' + $O365Group.SharePointSiteUrl +','+ $usr.Office +','+$usr.DisplayName +','+ $usr.PrimarySmtpAddress # $owners Get-UnifiedGroupLinks –Identity $O365Group.Identity –LinkType "Owners" Write-Host $msg -ForegroundColor Green Write-host New-Object -TypeName PSObject -Property @{ Title = $O365Group.DisplayName SharePointSiteUrl = $O365Group.SharePointSiteUrl Office = $usr.Office UserName = $usr.DisplayName UserEmail = $usr.PrimarySmtpAddress } | Select-Object Title,SharePointSiteUrl,Office,UserName,UserEmail } #Write to CSV. $OutPut | Export-CSV $OutDirectoryPath + \GroupSites.csv } catch [System.Exception] { Write-Host -ForegroundColor Red $_.Exception.ToString() } } Get-GroupsSites

CSOM PowerShell function to check if the a SharePoint Online site exits? It accepts credential and Url and return true or false.





$siteUrl = 'https://spo.sharepoint.com/sites/teamsite'
$credential = Get-Credential;

function CheckSiteExists($credential,$siteUrl){

 Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll" 
 Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll" 

     $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
     $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credential.UserName,$credential.Password);
     [System.Net.WebRequest]::DefaultWebProxy.Credentials = $Creds # needed for default gateway.
     $ctx.Credentials = $Creds;
     $web = $ctx.Web
      $ctx.Load($web)
      try{
            $ctx.ExecuteQuery()         
            return $true
         }
         catch{           
            return $false
        
         }  
        
}

#Calling the function: CheckSiteExits  $credentials $siteUrl

Update Logo using CSOM for SharePoint Online.



How to update the Update Logo using CSOM for SharePoint Online / 0365

The following PowerShell will update SharePoint Online logo for Site Collection /sites/sctest

function UpdateLogo(){

Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll"
try{

$siteUrl = "https://spdemo.sharepoint.com/sites/sctest"
$credential = Get-Credential
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credential.UserName,$credential.Password);

$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
[System.Net.WebRequest]::DefaultWebProxy.Credentials = $Creds # needed for default gateway.
$ctx.Credentials = $Creds;
$ctx.Web.SiteLogoUrl = "/SiteAssets/banner.jpg";
$ctx.Web.Update();
$ctx.ExecuteQuery();
$ctx.Dispose();
Set-OutPut "Logo Updated.." "NO ERROR"
$OutMsg = $OutMsg + "QH Logo Updated." + "`r`n"
Write-host $OutMsg
}
catch{
$Outmsg = $OutMsg + "`r`n"
$Outmsg = $OutMsg + "Error in function: UpdateLogo" + "`r`n"
$OutMsg = $OutMsg + "Line : $($_.InvocationInfo.ScriptLineNumber)" + "`r`n"
$OutMsg = $OutMsg + "$($_.Exception)" + "`r`n"
$OutMsg = $OutMsg + "$($_.Exception.Message)" + "`r`n"
Write-host $OutMsg
}

}


How to get document libraries size in your SharePoint Server 2007/2010/2013


How to get every document libraries size in your SharePoint Environment. SP2007/SP2010/SP2013?


 My current client is moving SharePoint On-Prem to SharePoint Online and they asked me to how much some of the document libraries are taking up size on the server. As most of the document library had more than 5000 Items and were very large libraries.
The logic I came out with was
  • 1.       Find every site collection in the SharePoint Server farm
  • 2.       For every Site collection get all the sites.
  • 3.       For every site get all the document libraries
  • 4.       For each document library get all the items attachments length.
  • 5.       Add it up per library and that should give total size on the server as shown below.


Following is the screenshot of output generated.





Following script generates the above output:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null

function Get-Inventory(){
 $farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
 $websvcs = $farm.Services | where -FilterScript {$_.GetType() -eq [Microsoft.SharePoint.Administration.SPWebService]}
 $webapps = @()

 foreach ($websvc in $websvcs)
 {
     write-host "Web Applications"
     write-host ""
     foreach ($webapp in $websvc.WebApplications)
     {
         write-host "Webapp Name -->"$webapp.Name
         write-host ""
         write-host "Site Collections"
         write-host ""
         foreach ($site in $webapp.Sites)
          {
            write-host "Site URL --> -->" $site.URL
            write-host ""
            write-host "Websites"
            write-host ""
             foreach ($web in $site.AllWebs)
             {
                    write-host ""
                    write-host ""
                    foreach ($list in $web.Lists) {
                        if ($list.BaseType -eq "DocumentLibrary") {
                          if(CheckSystemLibrary($list.Title))
                          {
                                $listSize = 0
                                foreach ($item in $list.items)
                                {
                                    $listSize += ($item.file).length
                                }                               
                                #"Web: "+$web.Title+", Library Name: "+$list.Title+",  "+[Math]::Round(($listSize/1KB),2)+" KB " 
                                $size = [Math]::Round(($listSize/1KB),2) 
                                $line = @{
                                            "Web" = $web.Title
                                            "URL" = $web.URL
                                            "Library"   =  $list.Title
                                            "Size-KB" =  $size
                                         }
                                New-Object PSObject -Property $line | select "Web","URL","Library","Size-KB"                                        
                               
                          } #end if checksystemlibrary      
                        } #foreach list.
                     }                     
             } #web
          } # site
      } # webapp
     } #websvc
   } #function.
  
   function CheckSystemLibrary($sysLib)
   {
       
        $arrLib = "Site Collection Documents", "Site Collection Images", "Site Images", "Site Pages", "Site Template Gallery","Site Templates", "Style Library", "Web Part Gallery",
                "Pages","Site Views","SitePages"
        $found = $arrLib -contains $sysLib
        return -Not $found
   }
  
                cls
                Get-Inventory | Export-Csv -NoTypeInformation -Path C:\Scripts\Output.csv       





How can you move SharePoint 2010 designer workflow from one server to another server?



By following the hack, you can move the SharePoint designer workflow from the Development server to production server.
Step
1.       In SP Designer, Open workflow and click Export to Visio. Save the file to the local folder yourWF.VWI extension.
2.       Rename the yourWF.vwi to yourWF.vwi.zip
3.       Open the .zip file and find  workflow.xoml.wfconfig.xml and delete it.
4.       Open you destination in designer and Import workflow.
5.       When you Import it will ask for list/library to configure it to your destination list/library.


Step 1: Screenshot.


Step 2: Rename the file


Step 3 & Step 4 As shown below





Step 5: Rename the file back.

Step 6: Create a new WF on destination server and import from Vision and select the file;

Step 7: It should ask to associate to the list/library viola ; it is done!!! Now you have workflow on the destination server.

SharePoint 2013 Visio Web Part access Error


SharePoint 2013 Visio Web Access Web part Error.  The Server Failed to process the request.






You can resolve the above problem by giving service account (sp_services) sysadm role in SQL Database.


How to find the service account which needs db_owner in SQL Db.??

Run the following commands in powershell. to find out what is the service ID

Get-SPServiceApplicationPool | Select Id, Name


Get-SPServiceApplicationPool -Identity "SharePoint Hosted Services"


I got the service ID which is used for SharePoint Hosted Services. And that is svc_spp_service on the My server.


I logged into SQL database and give access to this svc_Spp_service ID sysadmin access in MS SQL server.  And my problem was solved.



Forefront Identity Manager Event ID 3

.Net SqlClient Data Provider: System.Data.SqlClient.SqlException: HostId is not registered
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader()
   at Microsoft.ResourceManagement.Data.DataAccess.RetrieveWorkflowDataForHostActivator(Int16 hostId, Int16 pingIntervalSecs, Int32 activeHostedWorkflowDefinitionsSequenceNumber, Int16 workflowControlMessagesMaxPerMinute, Int16 requestRecoveryMaxPerMinute, Int16 requestCleanupMaxPerMinute, Boolean runRequestRecoveryScan, Boolean& doPolicyApplicationDispatch, ReadOnlyCollection`1& activeHostedWorkflowDefinitions, ReadOnlyCollection`1& workflowControlMessages, List`1& requestsToRedispatch)


/*=================================================*/
Cause: Time Zones of Sharepoint App Server, Database server are skewed and incorrect.

Solution
Fix the Database server , Application server times.

How To : Export-SPWeb Error : The columns don't currently have unique values


You try to export site collection on Production you get the following errors when you execute export command


Export-spweb –identity http://servername/sitecollectionname -Path E:\Backup\exp-web-sc.cmp

Throws error half way through the export

Export-SPweb : These columns don’t currently have unique values.




Basically if you get this error on production. You are stuffed. The Production content database is stuffed or something inside is corrupted. You have long way to rectify it. I had to take this long road to rectify on the production servers.


Option 1 : Using Staging server to do the clean up.


Following are the high level tasks I carried out to make it work correctly again production with all testing.

   

1.       Backup and Content database (Content_DB_Prod).bak . Move backup DB to staging server.

2.        Detach the current staging Content database (Content_DB_Stag). Attach the production content Database to staging

3.       Make sure all the Farm, site, web Solutions are working on staging.

4.       create a new second web application on staging note the content db name.

5.       Backup and restore each site collections to second web application on staging.( ie with in same Farm) : Test the solutions and everything is working fine.

6.       Drop the production web application (Caution first test with new web app on prod).

7.       Create a new web application on production

8.       Export-SPWeb and Import-SPWeb each site collection from the second web app created on staging to web application on Production.


/*====================================================*/
Option 2  Using production server to do the clean up.

1. Create a new Web application on Prod. (WA2)

2. Backup and restore each site collection from old web application to new Web application (WA2).

3. Delete the old Web application.  And Create a new Web application.

4. Using Export-SPWeb  export each site collection from WA2 and using Import-SPWeb import site collections to newly created Web Application. 

5. Now everything should work.!! 

Good Luck !!

Migration road map for Sharepoint 2007 to SharePoint 2013


Contents

Overview of Upgrade plan

The SharePoint 2013 upgrade process model followed in this document is a Microsoft recommend method of upgrade from SharePoint 2007 to SharePoint 2013. First 2007 is migrated to interim SharePoint 2010 Farm with all the customization carried forward from 2007 and from SharePoint 2010 to 2013. To minimize the impact of upgrade to end users no changes in architecture are carried before or during the upgrade and database upgrade option is adopted in the double hop upgrade plan.
The upgrade plan consist of 1. Pre-upgrade stage. 2. Trail upgrade. 3. Rehearsal upgrade & checklist. 4. Communication & downtime plan. 5. Production upgrade. 
Pre-upgrade: The main object of this stage is to gather Information, Hardware, Software, setup user accounts and to run the pre-upgrade check list and fix some of the housekeeping tasks prior to the actual migration.
Trail-upgrade: The main object of trail upgrade is identify 1. Upgrade errors & document errors. 2. Find fixes, document fixes and apply fixes for SharePoint 2010 farm. The outcome of trail upgrade will facilitate Rehearsal upgrade.  Trial upgrade will be performed for stage 1 and stage 2.
Rehearsal-upgrade: The main object of the rehearsal-upgrade is calculated exact time and go through the order of the checklist and apply fixes. The rehearsal-upgrade will facilitate the real production upgrade.
Communication & Downtime plan: This stage is mainly for stakeholders and management to communicate the outage of SharePoint, Changes to any sites/workflows etc. Training end users and impact to end users. A clear plan and picture can be implemented later once completely carrying out the Rehearsal upgrade for stages 1 and 2.
Production upgrade plan: This is the actual production upgrade by now all the information relating to upgrade is clear. And a smooth execution of the upgrade and implementing the checklist and its fixes are carried out. Communication plan and end user training and impact are carried out prior to this stage. A scheduled downtime on Friday morning is communicated. Upgrade email plans are sent out and SharePoint 2007 is in read only mood and Server is unavailable for end users until complete upgrade is performed.


Stage – 0

Requirement gathering Phase & Document check list stage.
1.   a. User IDs and passwords of all Farm, SQL Server, SPInstall
    Accounts used in SharePoint Central Admin.
b. AD, DNS and forest, IP range, subnet mask and other details.
c. Hardware / Software gathering  
          Windows 2008 R2 with SP2.
Windows 2012 Servers with latest service packs installed.
          Software (SQL Server 2008, SharePoint 2010/2013).
          SQL Studio Management.  2008.
          InfoPath Designer/ SharePoint designer 2010/ 2013
          VS2008 / VS 2010 / VS 2012
          Nintex 2010/Nintex 2013
c. Fire-wall and any network restrictions to be removed for your ID for future tools to download like, SPManager, ULS log viewer, Patches, hotfixes etc.
2.   Identifying and document any hidden Solutions / features / web parts source code unaware and used in SharePoint sites.  (Currently 12 Solutions identified)  - direct upgrade or re-work?
3.   Identify & understand and document Custom Scripts, Event receivers, Workflows.
4.   Rework/ Publish of InfoPath forms for 2010 upgrade.
5.   Identify and document Email enabled lists for later testing.
6.   Document Central Admin setting in migration check list, Master pages, Themes, CSS, Logo etc...
7.   Document and Clean-up sites/lists/documents library.
a.    Identify Performance bottle necks if any and document it.
b.    Create check list for manual migration of solutions/ InfoPath/ workflows etc.
8.   Make sure MOSS 2007 is upto date with SP2 Cumulative updates..
9.   Run Pre-Upgrade check tool /Scripts and check and resolve the possible problems
Stsadm –O preupgradecheck
Following are common problems.
a.    Orphaned users active in SharePoint but inactive in AD.
b.    Trim Audit logs in SQL Server using Studio.
c.    Empty Recycle bins.
d.   Find and delete Orphan sites.
e.    Scripts to clean up Document Versions in all Document library in entire farm to free up disk space. (Optional time consuming task).
f.     Database repair to detect corruption for the following types orphaned items. Stsadm -0 databaserepair (Optional very time consuming operation precaution).
Prepare and review pre-upgrade checklist from step 2 to Step 9.

Stage – 1


Build of interim SharePoint 2010 Single Server Test/Staging environment with trail licence for SharePoint server.

Review Farm Infrastructure & Prep Environment
1 day
   Install SQL Server and Patches on Database Server
0.5 day
   Install SharePoint Prerequisites
0.25 day
   Install SharePoint and SharePoint Patches
0.5 day
   Install Language packs
0.5 day
   Configure SharePoint Server
0.5 day
   Buffer if something goes wrong
0.5 -1 day





Since we are following a database attach upgrade we need to configure the services manually before the attaching the database. Service application, Managed Metadata, and user profile services to be started and configured.
The following database are copied along with content db.
1. Managed Metadata Service db
2. User Profile Service Profile db
3. User Profile Service     Social db
4. User Profile Sync DB  
5. WSS_Content_Mysites
6. WSS_Content_SSP.
Once all the database are copied to interim sharepoint 2010 envirnoment. New Service applications need to be created for the copied databases.
Following are the commands to create profile service application
          a. New-SPProfileServiceApplicaton -Name SharedServices2007
          -ApplicationPool "SharePoint Web Services Default" -ProfileDBName           wss_2007_COntent_Profile
Next create proxy for the created service applicaton
New-SPProfileServiceApplicationProxy -Name ShareServiceMoss2007Proxy -ServiceApplication GUID
Assign permissions for the Service Application. And test for user in profile search.
Next Upgrade Managed Metadata Service
Move-SPProfileManagedMetataProperty
Update Mysites.
Test Mysites health is good, Before bringing to 2010.
Test-SPContentDatabase  -Name Mysites_Content_DB -WebApplication URL -> Resolve all the issues reported.
Once all the issues are resolved attach the db to the new webapplication.
Stsadm -o addcontentdb -url MysiteURL -database 2007DBname databaseserver 2010DBServer.
Run Variationfixuptool for publishing sites
Stsadm -o variationfixuptool –url

a.    Database attach upgrade to 2010. Backup-Restore 2007Db
b.    Create web application and link to 2007 DB by
1.   Remove content db : Stsadm –o deletecontentdb –url  http:// -databasename 2007db.
2.   Test content db : Test-SPContentDatabase –Name 2007db –Webapplication name
c.    Manually migrate solutions/features / InfoPath/ workflow.
InfoPath Deploy cmd Update-SPInfoPathAdminFileURL -find <OldUURLtoReplace> -replace <NewURL>.
d.   Delete corrupted objects 
stsadm -o databaserepair -url  <URL of SharePoint site>  -databasename <name of database> -deletecorruption
e.    Attach Content DB. Mount-SPContentDatabase -Name <DatabaseName> -DatabaseServer <ServerName> -WebApp
f.     Export and Import BDC



Post upgrade to Identify upgrade errors and issues.
a.    Migrate Site templates to SharePoint 2010.
b.    If any errors find fix for upgrades, Add fix to 2010 Environment.
c.    Remove unused web-parts or closed web-parts in Pages.
d.   Test site collections and sub sites / Custom solutions/ Web parts after upgrade. (Scripts to Check-in and Check-out to eliminate 404 Page not found error).
e.    SharePoint alerts stop working due to URL changes. (Scripts for webapp or Admin Tool kit )  or  stsadm –o updatealert
f.     Unit testing of creating sites, document library, lists, kick-off workflows deploy new web-parts, test look and feel in the SharePoint 2010 environment.
g.   Perform above activity (rehearsal upgrade) again to get accurate time second time and checklist and note the time for migration.
h.   Perform Visual Upgrade on SiteCollections.
i.     Release SharePoint 2010 environment for review & testing. Site Admins to be involved here.

Stage – 2


In this stage we are building 2013 staging environment preparing 2010 environment for migration. Importance to be given to sequence of steps follows below.
Preparing 2010 SharePoint environment for Migration.
1.   Change the Authentication to claims in 2010 environment. Perform quick unit testing after the Change.
2.   Build of SharePoint 2013 staging environment (Dev / Test Server).

 Farm Infrastructure & Prep Environment
1 day
   Install SQL Server and Patches on Database Server
0.5 day
   Install SharePoint Prerequisites
0.25 day
   Install SharePoint and SharePoint Patches on Servers
0.5 day
   Install Language Packs
0.5 day
   Configure Application Servers and Establish a SharePoint Farm
0.5 day
 Buffer time
0.5 – 1 day.






a.    Initial stages of Database migration is similar to 2007 to 2010 upgrade till creating service applications. Important notes Stsadm is deprecated in 2013.
b.    Database attach upgrade to 2013. Backup-Restore 2010 content database to Sharepoint 2013 SQL Server.
c.    Test & Verify database is running by command Test-SPContentdatabase from SharePoint 2013 Farm.
d.   Attach the content db to WebApplication using Mount-SPContentdatabase.
e.    Perform Site Collection health check Test-SPSite –identity <url>
f.     Upgrade site collections.
g.   If Error use command “Repair-SPSite –identity <url>
h.   Review Infopath forms due to Claim authentication impacts. Known issues are reported.
i.     Test creating sites/lists/library/ workflows. Etc.
j.     Identify upgrade errors and issues.
k.    Find fix for upgrades, Add fix to 2013 Environment.
l.     Test site all site collections/ solutions/ Web parts after upgrade.

Perform above activity again to get accurate time second time. Log time and Check list.
Release 2013 for review & testing. Site Administrators to be involved in this stage.












Stage – 3

Build Production environment 3 Tire Staging farm with high availability.

A high level steps involved in the Production setup are

1.   Install new Windows 2012 R2 Server. Configure TCP/IP properties and join to domain restart the server and logon with domain account.
2.   Install MS SQL server on Database server and configure inbound rule in windows Firewall to allow incoming traffic to SQL Server services. Enable dbcreator and securityadmin role for spInstall account
3.   Repeat Step 1 for App1 Server and logon with spInstall and Install SharePoint 2013 prerequisites and install hotfixes KB 2554876, KB2708075, KB2472264.
4.   Install SharePoint 2013 on App1 as Application server. Configure App1 as main Application server & host Central admin port and create the new farm.
5.   Install SharePoint 2013 on App2 as Application server. Configure App2 by joining to existing farm. In central admin stop Managed Service Microsoft SharePoint Foundation Web Application as they are started on WFE1.
6.   Repeat Step 1 for WFE1. Install Web Server (IIS) role on WFE1
7.   Install prerequisites on WFE1, Install SharePoint Server on WFE1. Configure it to join exiting SharePoint Farm. And in Central Admin configure and stop all services not need for Front End and enable Microsoft SharePoint Foundation Web Application.
8.   Repeat step 6 for WFE2.
9.   Configure NLB for WFE1 and WFE2.