Calculated field

If you are defining a SharePoint list using declarative definitions in Visual Studio, you won’t find calculated field in the field types. I am using two examples, the first one is with date and the other one is with integer.

Date data type:

The solution will be create your field with any data type and go to the schema file and manually do the following changes:

  <Field Type="Calculated" DisplayName="ValidationDays" EnforceUniqueValues="FALSE" Indexed="FALSE" 
             Format="DateOnly" LCID="1033" ResultType="Text" ReadOnly="TRUE"
             StaticName="ValidationDays" Name="ValidationDays">
          <FieldRef Name="StopDate" />
          <FieldRef Name="StartDate" />
  • Type –> Calculated
  • ReadOnly –> True
  • Add the formula <Formula>=StartDate-StopDate</Formula>
  • Add the field ref


<FieldRef Name=”StopDate” />

<FieldRef Name=”StartDate” />


Deploy the feature to the SharePoint server and activate the feature.

Test the list.

Integer data type:

Repeat the same steps and the field definition in the schema field will be:

<Field Name="FreeTickets" ID="{90dfb1f0-257e-4530-b885-84842594323e}" Type="Calculated" >
				<Formula>= Tickets - SoldTickets</Formula>
          <FieldRef Name="Tickets" />
          <FieldRef Name="SoldTickets" />

Deploy the feature to the SharePoint server and activate the feature.

Test the list.

Data Migration

Imagine the following scenario, in your company there is a SharePoint 2013 web application with huge document library and unique permission levels. The organization revamped this web application to SharePoint 2019 and now they need to migrate the documents along with the security.

Steps to follow for such scenario will be:

  1. Export the document library with the security by using the following CMDLET
    • Export-SPWeb -Identity <Source Site URL> -Path “C:\BKP\docbak.cmp” [-ItemUrl <Library URL>] [-IncludeUserSecurity] [-IncludeVersions] [-NoFileCompression]
  2. Import the exported library by using the following CMDLET
    • Import-SPWeb -Identity <Distination URL> -Path “C:\BKP\docbak.cmp” -Force -NoFileCompression -IncludeUserSecurity

Notice file compression is not used because if the document library is huge, the command could take days to run.

Sometimes the import command will fail. If SharePoint give reasons for failure and mostly it will be related to the security issues, you fix them and try again. If the failure continue to happen you can try the old cmd tool for SharePoint stsadm.exe

stsadm –o gl-importlist -url <Distination URL> -filename “C:\BKP\docbak.cmp” -includeusersecurity -nofilecompression



Install and deploy custom solutions

Install SharePoint solution:

The cmdlet includes many parameters but the most commonly used is the following one:

Add-SPSolution -LiteralPath “physical path\solution name.wsp”

ex: Add-SPSolution -LiteralPath “c:\SolutionFolder\Solutionname.wsp”

Deploy SharePoint solution:

  1. deploy the solution globally into the farm:
    • Install-SPSolution -Identity solutionname.wsp -GACDeployment
  2. deploy the solution to specific web application:
    • Install-SPSolution -Identity solutionname.wsp -WebApplication “http://webappURL” -GACDeployment
  3. deploy the solution and identify the compatibility level (this is useful while upgrading the solution):
    • Install-SPSolution -Identity solutionname.wsp -GACDeployment -CompatibilityLevel {14,15}
  4. Deploy the solution using the central administration:
    • Login into central administration as the farm admin
    • Navigate to system settings and choose farm solutions
    • Check the solution list, the recently added one will have status “not deployed” choose and select the web application.
    • Press deploy

That was a summary of the needed cmdlet to install and deploy SharePoint custom solutions