Wednesday, November 12, 2014

SharePoint Knowledge Transfer Check-List

In a SharePoint architect/administrator's life, Its quite a common task to takeover existing SharePoint environments at the time of Job/Role switch. From my experience, Here is the check list to help easing up that job:

SharePoint  Infrastructure
  • Farm(s) Topology - List of servers and roles, physical and logical architecture diagrams for production, Staging and Development Environment (if applicable)
  • Server Infrastructure (Physical/Virtual), Storage, CPU-RAM-Network configurations
  • List of Service Accounts (Setup account, Farm account, search crawler account, etc) and passwords
  • Maintenance windows schedule - Patching, patch Level? OS versions?
  • Incoming/Outgoing E-mail configurations. SMTP configuration details
  • IIS Level customizations (compression, URL rewrite, redirects, etc.)
  • Backup, Disaster recovery in place. Tools used (SCDPM, Comvault, etc). Backup frequency.
  • Database server details. SQL Alias? Redundancy - Clustering in place? Mirroring? Always ON?
  • Monitoring setup for server/application Health, SCOM, etc
  • Load Balancing/Publishing details (ISA? TMG? CISCO Ace? or any other Hardware load balancer, F5 Big IP?)
  • Third party software (Nintex, Layer2, Control Point, etc installed in the environment
  • Licensing details for SharePoint and any 3rd party software. Volume/MSDN Licenses for DEV/TEST? Premier support with vendors such as Microsoft?
  • Profile Import/My site setup - Schedules, directory services/sources List
  • Last but not least - Contact person/teams for all dependent teams such as Network, DBA teams, System Admins, Backup, AD, Server Hardware, Security, Exchange server, etc.
Users & Security:
  • User Base - Total No. of users, region, locations, internal vs. external, site usage in last one Month?
  • How external users access SharePoint? Published Intranet? users member of AD? VPN connections?
  • Custom authentication provider in use (E.g. FBA, AD LDS, ADFS, Live)? Kerberos ?
  • Web applications/CA is SSL enabled? certificate details, providers.
  • Any SharePoint specific Antivirus on SP Servers? E.g. Forefront antivirus for SharePoint? Third party anti-virus solutions such as McAFee?
  • Are there any exclusive site for end-user training materials, FAQs, KB, etc?Any self service sites?
  • Access Rights Policies? - Any custom permission levels created (E.g. contributor without delete)
SharePoint Inventory:
  • List of web Applications, site collections with owner contacts
  • List of customizations/custom solutions and its documentation
  • Additional Language Packs installed.
  • CA Specific custom settings - Recycle bin, Max File Upload size, Storage quotas, etc
  • Integration points (Interfaces) with LOB and other applications/ Software (SQL server reporting services?)
  • List of SharePoint and other related application databases
  • How Branding is applied, Whats being done? (feature staplers/custom site definitions/Themes/Custom CSS, Master pages, etc)
  • List of SharePoint Sites that are most critical to business?
  • Typical SharePoint Usages in the Org. (Collaboration, Knowledge Management, Enterprise content Management, Document management, Dashboards, etc. )
  • Repository for configuration files, Implementation/Build guides, Known error database (KEDB) , Incident Logs, RCA (root cause analysis), (CSV, SVN, TFS, etc.)
Process and Metrics:
  • Team Structure - Team Members, Roles supporting existing SharePoint environment.
  • System in place for Incident/Request/Change management? 
  • How end user requests are routed to the team? Provide the complete request life cycle.
  • Existing SLA and priorities for incident management. 
  • Governance Policies in place. E.g. site creations, content responsibility, support limits, etc 
  • Support statistics (Tickets received last month, open/close, etc)
  • Scheduled Reports to the business owners? E.g. Monthly reports for usage.
  • Remote Sharing/ User Interaction methods (Web ex, etc).
  • Communication plan for any planned/unplanned outages - Key stakeholder list
Please comment to add/remove your own items to this list.

You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Five Challenges in SharePoint Security
...And How to Solve Them. Free White Paper
*Sponsored


Wednesday, October 29, 2014

Archive SharePoint Library Files into Sub-Folders using PowerShell

Requirement: We've a very large library with more than 20,000 files stored in the root of the document library without any sub-folders. Got to move files into Sub-folders to improve performance.

Solution: We analyzed the library content and decided to move files into sub-folders based on file's created date.

PowerShell script to move files into sub-folders in SharePoint document library:
#Import PowerShell Snap-in
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

#Create a custom function to archive files
Function Archive-Files($WebURL, $ListName)
{
 #Get the web and List
 $Web = Get-SPWeb $WebURL
 $List= $web.Lists[$ListName]

 $RootItems = $List.RootFolder.files 
 Write-host "Total number of files found in the Root: "$RootItems.count

 #Move each file in the root folder to archive folder
 foreach($item in $RootItems)
 {
   #Get the File
   $file = $Web.GetFile($item.URL)

   #Get the Month & Year values from the File's crated date
   $MonthYearValue = $file.TimeCreated.ToString('MMM-yyyy')
   
   # Try to Get the Archive Sub-Folder in the target Library
   $TargetFolder = $List.ParentWeb.GetFolder($List.RootFolder.Url + "/" +$MonthYearValue);
   
   #If the Archive folder doesn't exist, Create it!
   if ($TargetFolder.Exists -eq $false)
    {
       $TargetFolder = $List.Folders.Add("", [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $MonthYearValue)
       $TargetFolder.Update() 
    }
    #Move the File
    $file.MoveTo($TargetFolder.Url + "/" + $File.name)  
  }
}

#Call the function to Archive Files
Archive-Files "http://sharepoint.crescent.com/sites/marketing/" "Invocies"
This script preserves Metadata, BTW! You can also move files into sub-folders of an another SharePoint library for archival.

You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Five Challenges in SharePoint Security
...And How to Solve Them. Free White Paper
*Sponsored


Monday, October 27, 2014

Get SharePoint Document Library Inventory with PowerShell

This PowerShell script generates detailed report on the given SharePoint library's inventory in addition with its storage data. The output report contains:
  • File Name
  • File Size(KB)
  • Versions Size(KB)
  • Total File Size(KB)
  • Created on
  • Last Modified
  • Created by
  • Parent Folder
  • URL
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

# Function to retrieve detailed Library storage Report
Function GetLibraryStorageRpt($Folder)
{
    #Array to hold Storage data for all files
    $StorageDataCollection = @()
    
    $FileSize = 0
 $TotalFileSize = 0
    foreach ($File in $Folder.Files)
    {
        #Get File Size
        $FileSize = $File.TotalLength
        
        $VersionSize = 0
        #Get the Versions Size
        foreach ($FileVersion in $File.Versions)
        {
            $VersionSize +=$FileVersion.Size
        }
        $TotalFileSize = $FileSize + $VersionSize
  
        $StorageDataResult = New-Object PSObject
 
        $StorageDataResult | Add-Member -type NoteProperty -name "File Name" -value $File.Name
        $StorageDataResult | Add-Member -type NoteProperty -name "File Size(KB)" -value $($FileSize/1KB)
        $StorageDataResult | Add-Member -type NoteProperty -name "Versions Size(KB)" -value $($VersionSize/1KB)
        $StorageDataResult | Add-Member -type NoteProperty -name "Total File Size(KB)" -value $($TotalFileSize/1KB)
        $StorageDataResult | Add-Member -type NoteProperty -name "Created on" -value $File.TimeCreated 
        $StorageDataResult | Add-Member -type NoteProperty -name "Last Modified" -value $File.TimeLastModified 
        $StorageDataResult | Add-Member -type NoteProperty -name "Created by" -value $File.Author.Name        
        $StorageDataResult | Add-Member -type NoteProperty -name "Parent Folder" -value $File.ParentFolder.URL
  $StorageDataResult | Add-Member -type NoteProperty -name "URL" -value $File.URL

        $StorageDataCollection += $StorageDataResult
 #Write-Host "Processing File:"$File.Name
    } 
      #Get Files in Sub Folders
        foreach ($SubFolder in $Folder.SubFolders)
        {   
         if($SubFolder.Name -ne "Forms") #Leave "Forms" Folder which has List default Aspx Pages.
             {
                GetLibraryStorageRpt($SubFolder)          
             }
        }   
    return $StorageDataCollection
}

#Input Variables 
$WebURL = "http://sharepoint.crescent.com/sites/operations" 
$ListName ="Documents"

#Get the List
$List = Get-SPWeb $WebURL | Select -ExpandProperty "Lists" | Where-Object{$_.Title -eq $ListName}

#Call the function to get data 
$StorageDetails = GetLibraryStorageRpt($List.RootFolder)

write-host "Total Number of Files:" $List.ItemCount 
write-host "Library Created by:" $List.Author

#Calculate the Total Size
$TotalSize = ($StorageDetails | Measure-Object 'Total File Size(KB)' -Sum | Select -expand Sum)  
Write-host "Library Size in MB: "([Math]::Round( ($TotalSize/1024),2))

#Export the data to CSV File
$StorageDetails | sort-object "Total File Size" -descending | Export-csv "$($ListName)_LibraryStroageRpt.csv" -notypeinformation
Write-Host "Storage Report has been Generated!"
 


You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Five Challenges in SharePoint Security
...And How to Solve Them. Free White Paper
*Sponsored


Wednesday, October 22, 2014

Copy List Permissions in SharePoint using PowerShell

Ever wanted to clone permissions between SharePoint lists or Libraries? Well, Here is the nifty PowerShell script to copy permissions between SharePoint lists:
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

#PowerShell Function to copy permissions between Lists in SharePoint
Function Copy-ListPermissions()
{
 param(
     $WebURL,
     $SourceListName,
     $TargetListName
 )
 #Get the Web
 $Web = Get-SPweb $WebURL

 #Get Source and Target Lists
 $SourceList = $Web.lists[$SourceListName]
 $TargetList = $Web.lists[$TargetListName]

 #if permissions are Inherited in Source, apply it in Target list 
  if($SourceList.Permissions.Inherited)
   {
      $TargetList.ResetRoleInheritance()
   }
  else #Copy permissions from Source to Target List
  {
     #Reset the Inheritence in Target List
     $TargetList.BreakRoleInheritance($false)

     #Copy Source list permissions to Destination List
     $SourceList.RoleAssignments | foreach-object {
     $targetList.RoleAssignments.Add($_)
      }
  }
 $TargetList.Update()
}
#Call the function to copy list permissions 
Copy-ListPermissions "http://sharepoint.crescent.com/sites/operations/us" "Documents" "Invoice"
This script copies all users and groups from the source list to target list. Any custom permissions already applied on the target list will be lost!

The above method can be used to copy permissions between SharePoint list items and sites.

You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Five Challenges in SharePoint Security
...And How to Solve Them. Free White Paper
*Sponsored


Tuesday, September 16, 2014

Determine the Installed SharePoint Edition: Standard or Enterprise

Here is how to check whether standard or enterprise edition is installed in SharePoint 2013.

Go to Central Admin >> Upgrade and Migration >> Click on "Enable Enterprise Features"
Determine the Installed SharePoint Edition: Standard or Enterprise

This procedure stays same to check standard or enterprise SharePoint 2010 and SharePoint 2007:
  • When the “Enterprise” is selected and grayed-out, it’s an Enterprise edition of SharePoint!
  •  Here is the Standard edition screen: If, Standard option is enabled, then we can determine its a Standard edition.

SharePoint 2013 standard to enterprise upgrade:
You can use this page in SharePoint to upgrade standard to enterprise. But you can't downgrade SharePoint enterprise to standard.

You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Five Challenges in SharePoint Security
...And How to Solve Them. Free White Paper
*Sponsored


You might also like:

Related Posts Plugin for WordPress, Blogger...