Saturday, March 23, 2019

Sitecore Migration Opportunities

Recently I was discussing with one of my sales colleagues who look after Digital transformation projects in the IT world. While we were discussing, an interesting topic came around is “Migration” and none of the Digital transformation projects end without performing a migration. Migration can be of different scale, platform, life span…etc but all agreed that we need to have a clear vision and roadmap on migration for a successful transformation project. Since I am from MS technology background and on the content side, an interesting question thrown on me asking “What are the possible migration tracks” that we consider when we go and look for potential opportunities on “Sitecore”.
Based on my experience and strategy of Sitecore product, I could call out 3 tracks that we can consider for Sitecore Migrations –
  1. Standard Sitecore Migration – legacy version to Sitecore 9.x, either be a standard version upgrade or complete digital experience transformation to Sitecore 9.x
  2. Legacy CMS to Sitecore – outdated CMS platforms like SharePoint, OpenText, HP TeamSite, WordPress to Sitecore 9.x
  3. Non-CMS to Sitecore – of course still some customers are not leveraging the benefits of CMS but trying to build their CMS focused products on .NET/Java/Php…etc



Areas to focus and consider
Standard Sitecore Migration – Enterprises who already have Sitecore as a platform for Web/Portals focusing on both B2C and B2B but on legacy versions like 6.x, 7.x, and 8.x who does not leverage the latest benefits available in Sitecore 9.x version (like Marketing Automation, Headless CMS, SXA, Machine Learning…etc).
Of course, as-is upgrades are now possible and can be done rapidly using Express Migration tools (check the version compatibility at first sight 😊), Sitecore documented upgrade approach (this is bit manual and need concentration while performing the activities). But nowadays, most of the service providers have a decent level of experience performing this kind of migration/upgrades with their in-house tools as well.
Also have a quick check on modules like ExM, FxM, xDB, WFFM, Workflows (if any), Custom Reports through MongoDB, legacy connectors..etc
Legacy CMS to Sitecore – As we all know the strategy of SharePoint Onprem (& O365) is more towards the collaboration and digital workplace. I see a good chunk of opportunity for the legacy CMS’s to move towards Sitecore because of the Analytics, Integration frameworks (like Salesforce, Dynamics, DAM.etc), Integrated Marketing automation and blended Commerce (in CMS) which we don’t get in SharePoint kind of platform. The list does not end with SharePoint, it is something relatable to every other legacy CMS deployed at enterprises focusing on B2B/B2C & as revenue generators.
Definitely, we need to consider and plan the migration path for such stack in detail which includes the multi-site, multi-lingual, forms, data items, permissions (both authentication & authorization), Analytics, the publishing process, global deployments/rollouts…etc. Also consider the reusability aspects like customizations, integration service points, connectors(if any), infrastructure, software licenses like SQL..etc which will play a crucial role in the overall implementation cost.
Lastly, validate the benefits & ROI for business by doing this CMS migration at the enterprise level.
Non-CMS to Sitecore – I see this as quite an easy way of doing only when customer understand the importance of CMS and benefits he/she is going to get at an enterprise level through COT CMS products like Sitecore, till then it is one of the toughest jobs in the world 😊. Firstly, we need to educate the customer on CMS and then make understands how Sitecore can help to fulfill the requirement. Moving away from .NET based systems to Sitecore can be quite straight forward as compared to java/php..etc because of the core framework.
Nevertheless, we should consider Sitecore PaaS (Cloud) is one of the possible destinations as compared to On-premises Sitecore (IaaS on Cloud) while performing the Sitecore Migrations in the overall digital transformation. 

I hope this gives an insight into the Sitecore opportunities we can think of. Please comment below the various other aspects to consider for the benefit of everyone.

Note: The opinions expressed are solely my own and not the views of my employer.


Tuesday, September 20, 2016

Gartner's ECM Product Ratings

Here you can see the ratings provided by technology vendors who use various ECM products. Based on the capability, business usage, problem solving easiness the vendors have provided ratings as well their reviews on individual ECM products.

Here you go for it - https://www.gartner.com/reviews/market/enterprise-content-management

Tuesday, August 30, 2016

Extract Files & Metadata from SharePoint

here the quick powershell script which can be used to extract files & metadata present in SharePoint.
This script wont work if the file name or path exceeds beyond the SharePoint url limit (260 characters)

# This script will extract all of the documents and their versions from a site. It will also
# download all of the list data and document library metadata as a CSV file.
 
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
# 
# $destination: Where the files will be downloaded to
# $webUrl: The URL of the website containing the document library for download
# $listUrl: The URL of the document library to download
 
#Where to Download the files to. Sub-folders will be created for the documents and lists, respectively.
$destination = "C:\Export"
 
#The site to extract from. Make sure there is no trailing slash.
$site = "http://yoursitecollection/yoursite"
 
# Function: HTTPDownloadFile
# Description: Downloads a file using webclient
# Variables
# $ServerFileLocation: Where the source file is located on the web
# $DownloadPath: The destination to download to
 
function HTTPDownloadFile($ServerFileLocation, $DownloadPath)
{
 $webclient = New-Object System.Net.WebClient
 $webClient.UseDefaultCredentials = $true
 $webclient.DownloadFile($ServerFileLocation,$DownloadPath)
}
 
function DownloadMetadata($sourceweb, $metadatadestination)
{
 Write-Host "Creating Lists and Metadata"
 $sourceSPweb = Get-SPWeb -Identity $sourceweb
 $metadataFolder = $destination+"\"+$sourceSPweb.Title+" Lists and Metadata"
 $createMetaDataFolder = New-Item $metadataFolder -type directory 
 $metadatadestination = $metadataFolder
 
 foreach($list in $sourceSPweb.Lists)
 {
  Write-Host "Exporting List MetaData: " $list.Title
  $ListItems = $list.Items 
  $Listlocation = $metadatadestination+"\"+$list.Title+".csv"
  $ListItems | Select * | Export-Csv $Listlocation  -Force
 }
}
 
# Function: GetFileVersions
# Description: Downloads all versions of every file in a document library
# Variables
# $WebURL: The URL of the website that contains the document library
# $DocLibURL: The location of the document Library in the site
# $DownloadLocation: The path to download the files to
 
function GetFileVersions($file)
{
 foreach($version in $file.Versions)
 {
  #Add version label to file in format: [Filename]_v[version#].[extension]
  $filesplit = $file.Name.split(".") 
  $fullname = $filesplit[0] 
  $fileext = $filesplit[1] 
  $FullFileName = $fullname+"_v"+$version.VersionLabel+"."+$fileext   
 
  #Can't create an SPFile object from historical versions, but CAN download via HTTP
  #Create the full File URL using the Website URL and version's URL
  $fileURL = $webUrl+"/"+$version.Url
 
  #Full Download path including filename
  $DownloadPath = $destinationfolder+"\"+$FullFileName
 
  #Download the file from the version's URL, download to the $DownloadPath location
  HTTPDownloadFile "$fileURL" "$DownloadPath"
 }
}
 
# Function: DownloadDocLib
# Description: Downloads a document library's files; called GetGileVersions to download versions.
# Credit 
# Used Varun Malhotra's script to download a document library
# as a starting point: http://blogs.msdn.com/b/varun_malhotra/archive/2012/02/13/10265370.aspx
# Variables
# $folderUrl: The Document Library to Download
# $DownloadPath: The destination to download to
function DownloadDocLib($folderUrl)
{
    $folder = $web.GetFolder($folderUrl)
    foreach ($file in $folder.Files) 
 {
        #Ensure destination directory
  $destinationfolder = $destination + "\" + $folder.Url 
        if (!(Test-Path -path $destinationfolder))
        {
            $dest = New-Item $destinationfolder -type directory 
        }
 
        #Download file
        $binary = $file.OpenBinary()
        $stream = New-Object System.IO.FileStream($destinationfolder + "\" + $file.Name), Create
        $writer = New-Object System.IO.BinaryWriter($stream)
        $writer.write($binary)
        $writer.Close()
 
  #Download file versions. If you don't need versions, comment the line below.
  GetFileVersions $file
 }
}
 
# Function: DownloadSite
# Description: Calls DownloadDocLib recursiveley to download all document libraries in a site.
# Variables
# $webUrl: The URL of the site to download all document libraries
function DownloadSite($webUrl)
{
 $web = Get-SPWeb -Identity $webUrl
 
 #Create a folder using the site's name
 $siteFolder = $destination + "\" +$web.Title+" Documents"
 $createSiteFolder = New-Item $siteFolder -type directory 
 $destination = $siteFolder
 
 foreach($list in $web.Lists)
 {
  if($list.BaseType -eq "DocumentLibrary")
  {
   Write-Host "Downloading Document Library: " $list.Title
   $listUrl = $web.Url +"/"+ $list.RootFolder.Url
   #Download root files
   DownloadDocLib $list.RootFolder.Url
   #Download files in folders
   foreach ($folder in $list.Folders) 
   {
       DownloadDocLib $folder.Url
   }
  }
 }
}
 
#Download Site Documents + Versions
DownloadSite "$site"
 
#Download Site Lists and Document Library Metadata
DownloadMetadata $site $destination

Monday, October 5, 2015

SharePoint App's

Advantages of using SharePoint App

  • Keep custom code off of the SharePoint servers! Administrators spend a lot of their time setting up and maintaining the SharePoint servers in your organization. Apps for SharePoint either run 100% client-side within SharePoint, or separate web application server (hosted or on premise). Either way, apps are isolated from SharePoint so a poorly performing app will not affect your entire SharePoint environment. This also allows Apps to be installed without downtime in SharePoint.
  • Give control to site owners to allow them to install the apps they want on their site either from the Microsoft store or your organizations internal App Catalog.
  • Keep control by disabling the public Microsoft store or require approval for the apps that site owners want to add to their site.
  • Apps are first-class citizens in SharePoint! Apps are given their own permissions to specific SharePoint resources such as lists, documents, sites, search, etc… User security still applies as well. An advantage is that when content is created or modified it shows Modified By <> on behalf of <> allowing administrators and users to see what app is making changes to the content. Separate permissions also allows for the App to be revoked access, without changing the permissions of the users.
  • Since Apps are isolated, the SharePoint environment is much easier, and therefore cheaper, to migrate or upgrade when the next version of SharePoint is released.
  • Apps are supported in the cloud. SharePoint Online fully supports the new app model, making it a much more viable option for organizations who are considering moving to the cloud.
  • Apps can be written in several different ways. This allows developers to use their core strengths to develop their apps. This may be HTML5, JQuery, CSOM, C#, PHP, Java, etc…
  • Already have a custom web application and now you need to integrate it into SharePoint? No problem. Create an App Package that points to your existing web application and you’re good to go. Of course, if you want your application to read from or make updates to SharePoint, you’ll need to make some additions to your application. But this doesn’t necessarily mean a complete rewrite.
  • Sell your apps! If you or your organization has developed a great reusable app, you can publish it to the Microsoft Office Store and sell it to others. Microsoft handles the billing and delivery of the app, so all you need to do is build it, publish it, and support it.
  • The Office Store makes it easy to find and purchase apps that you know have been vetted by Microsoft.


Thursday, August 27, 2015

SharePoint 2016 RTM - Deprecated Features

Deprecated Features so far in SP 2016

Feature
Description
SharePoint Foundation
There will not be foundation edition of SharePoint 2016 available going forward. It’s a big change from all the previous versions of SharePoint.
Standalone Installation
No more standalone, instead we will have single server deployment. We need to have SQL Server installed before we go for SP installation.  Read through “MinRole” feature as well on this
Forefront Identity Manager Client
No more FIM, instead we probably need to use Microsoft Identity Manager 2016 or default AC import process. Need to hear more from Microsoft on this update
Excel Services
Excel Services and its related BI features are plugged out. It is now attached to Office 2016 Preview (Excel Online). It is important to understand when we anchor solutions related to BI for our customers
SharePoint BI – default features
Its halted for some reason, hopefully some clarity should be there before we get the final product from Microsoft
Tags & Notes
There feature is completely removed and even non-compatible to older versions as well when we upgrade or migrate. Think through about this when we anchor any migration related projects with customer
Stsadm.exe
Only PowerShell, now developers cannot excuse J