Saturday, June 18, 2016

SharePoint REST Get All Columns of a List

The below sample lists all the internal names columns of a list.
<script type="text/javascript">
$(document).ready(function () {

        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('ListName')/items?$select=*",
        type: "GET",
        headers: {
            "accept": "application/json;odata=verbose",
        success: function (data) {
        error: function (error) {
            alert("Error occured in loading columns!");


Tuesday, February 2, 2016

SharePoint Server 2016 New Features

As many SharePoint Developers/Users are very much eager to know what's new in SharePoint Server 2016, I tried to list out all the newly available features (information is gathered from various Microsoft & Related blogs/forums).

Though there are various new features, the below list covers most of the major/significant features.
Please note that the features are available in SharePoint Server 2016 Beta 2 with Release Candidate.

  • Central Administration is no longer provisioned on all servers by default
  • Document Library accessibility
  • Fast Site Collection Creation
  • Zero Downtime Patching
  • Removed 5,000 View Threshold – sort of

Central Administration is no longer provisioned on all servers by default
SharePoint Server 2016 Central Administration is now provisioned on the first server in a farm by default when using the SharePoint Products Configuration Wizard. Central Administration is not provisioned on additional servers in a farm by default.

Note: You can provision or unprovision Central Administration on individual servers in a farm no matter what the server role.

Document Library accessibility
  • Keyboard shortcuts are provided for the following document tasks:
    • Alt + N - New
    • Alt + E - Edit
    • Alt + U - Upload
    • Alt + M - Manage
    • Alt + S - Share
    • Alt + Y - Synchronization
  • Focus improvements, such as keeping focus on prior elements and focus trapping.
  • Announcements for upload progress.
  • Announcements for file name and file types when browsing folder and file lists.

Fast Site Collection Creation
By using a template, a Site Collections can be created in 1 second. This compares well to SharePoint 2013 that takes up almost over 40 seconds sometimes.

This new feature provides templates that work at same level as SQL Server, which reduces the round trips required between the SharePoint and SQL servers. Use the SPSiteMaster Windows PowerShell cmdlets to create sites and site collections quickly.

File names - expanded support for special characters
SharePoint has historically blocked file names that included the &~{, and } characters, file names that contained a GUID, file names with leading dots, and file names longer than 128 characters. These restrictions are removed in SharePoint Server 2016.

NoteRestricted characters such as % and # are still not allowed in file names.

Hybrid in SharePoint Server 2016
Hybrid sites features allows your users to have an integrated experience while using SharePoint Server and SharePoint Online sites:
  • Users can follow SharePoint Server and SharePoint Online sites, and see them consolidated in a single list.
  • Users have a single profile in Office 365, where all of their profile information is stored.
Hybrid OneDrive for Business
Hybrid sites features are used in concert with Hybrid OneDrive for Business (introduced in SharePoint Server 2013 with Service Pack 1 (SP1)):
  • Users can sync files with Office 365 and share them with others.
  • Users can access their files directly through Office 365 from any device.
Cloud hybrid search
Cloud hybrid search is a new hybrid search solution alternative. With cloud hybrid search:
  • You index all of your crawled content, including on-premises content, to your search index in Office 365. You can set up the crawler in SharePoint Server 2016 Release Candidate to crawl the same content sources and use the same search connectors in Office SharePoint Server 2007, SharePoint Server 2010, and SharePoint Server 2013.
  • When users query your search index in Office 365, they get unified search results from both on-premises and Office 365 content.

Large file support
Though It is still not recommend storing large files in SharePoint, you can now go way beyond the previous 2GB limit for files. Though there's no real limit, Microsoft has strongly recommended it stays at 10GB. Otherwise, end users will very likely get disconnected or get a time out while uploading large files.

Note: You can configure the desired maximum file-size limit on a per-web application basis in your SharePoint farm.

MinRole farm topology
You can now install just the role that you want on particular SharePoint 2016 servers. This will only install what’s required there, but even better, it'll make sure that all servers that belong to each role are compliant. You’ll also be able to convert servers to run new roles if needed.

Mobile experience
Considering the usage of mobiles and tablets noway days, SharePoint 2016 comes with a touch friendly interface.

When you use a mobile device to access the home page for a SharePoint Server 2016 team site, you can tap tiles or links on the screen to navigate the site. You can also switch from the mobile view to PC view, which displays site pages as they are seen on a client computer.

Open Document Format (ODF) available for document libraries
The Open Document Format (ODF) enables you to create new files in a document library and save as ODF files so that users can edit the new file with a program they choose.

  • Create and Share folder
  • Sharing Hint
  • See who the folder is shared with when viewing a folder
  • Members can share
  • Improved invitation mail
  • One-click email to approve or deny a request for access
SharePoint Search Service application
SharePoint Search supports indexing of up to 500 million items per Search Server application.

Zero Downtime Patching
Now this will surely please many of you managing the SharePoint servers, the size and number of the packages are immensely reduced. They’ve also removed the downtime previously required to update SharePoint servers.

Removed 5,000 View Threshold – virtually
A Document Library/List can have 30,000,000 documents, that’s never been an issue. However, many of you know that 5,000 seems to be the actual limit for many end users that don't know they had to index their columns.

Actually the 5,000 view threshold is actually necessary, or your entire SharePoint would be slown down. It prevents SQL to lock the entire database really.
Instead of removing this unpopular threshold, they automated the creation of Indexed Columns. This means that technically the limit is still there, but you won’t have to worry about it.

Note: Allowing automatic management of indices is configurable (on/off) through list settings.

New Compliance Center
Not only can you leverage a lot of the compliance features in Office 365 with your On-Premises SharePoint 2016, new sites have been introduced to help you stay in control.
The In-Place Policy Hold Center and the Compliance Center allow you to build your own policies and apply them against your environment. New basic policies allow you to delete data in OneDrive for Business sites after an x amount of years for example, not unlike “Retention Policies” if you think about it.

SharePoint Server 2016 Release Candidate Available

After release of SharePoint Server 2016 Beta 2 in November 2015, Recently Microsoft announced the availability of SharePoint Server 2016 Release Candidate (RC). SharePoint Server 2016 RC is mostly feature complete and represents an important milestone for customers and partners looking to deploy and evaluate SharePoint Server 2016 before general availability in Spring 2016.

You can download SharePoint Server 2016 RC via the Microsoft Download Center.

Release Candidate is an update to SharePoint Server 2016 Beta 2 and can be installed over Beta 2 only.

You can download SharePoint Server 2016 Beta 2 via the Microsoft Download Center.

Note that SharePoint Server 2016 Beta 2 is only an development evaluation version and it is not recommended for production use.

Thursday, December 10, 2015

SharePoint Custom ULS Logging

Here is a working code snippet (C# class) to write custom errors or logs to ULS log.

using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.Collections.Generic;

namespace CustomLogging
    class LoggingService : SPDiagnosticsServiceBase
        public static string diagnostcAreaName = "CustomLogging";
        public static string errorPrefix = "CustomLogging: ";

        private LoggingService()
            : base("CustomLogging Logging Service", SPFarm.Local)

        protected override IEnumerable<SPDiagnosticsArea> ProvideAreas()
            List<SPDiagnosticsArea> areas = new List<SPDiagnosticsArea>
                new SPDiagnosticsArea(diagnostcAreaName, new List<SPDiagnosticsCategory>
                    new SPDiagnosticsCategory("CustomLogging", TraceSeverity.Unexpected, EventSeverity.Error)

            return areas;

        public static void LogError(string message, EventSeverity eventSeverity)
            SPSecurity.RunWithElevatedPrivileges(delegate ()
                SPDiagnosticsService diagnosticService = SPDiagnosticsService.Local;
                diagnosticService.WriteTrace(0, new SPDiagnosticsCategory(diagnostcAreaName, TraceSeverity.Monitorable, eventSeverity),
                   TraceSeverity.Monitorable, errorPrefix + "{0}", new object[] { message });


An entry to ULS logs can be written using the below snippet with make use of the above class.
    //Business logic
catch (Exception ex)
    LoggingService.LogError(ex.Message + " " + ex.StackTrace + "\r" + ex.Source, (EventSeverity)EventSeverity.Information);

Monday, August 3, 2015

SharePoint Cross Site Lookup Field

Can we create a cross site lookup field?
Yes of course, it can be. Thought it is not possible OTB, a simple trick will do this.

Scenario: Creating a cross site lookup field between the two peer web sites or sub web sites under a same site collection.
Example: Create a lookup field between two sites http:/sitecollection/webA & http://sitecollection/webB

The trick is just to set the lookup field webId with the target list webId.
Code snippet to create cross site lookup field programatically:
private bool CreateCrossSiteLookupField(SPWeb sourceWeb, SPWeb targetWeb, string sourceListTitle, string targetListtitle, string lookUpFieldName, string lookupValueColumn, bool isRequiredField)
    ////Get the source and target lists 
    SPList sourceList = sourceWeb.Lists.TryGetList(sourceListTitle);
    SPList targetList = targetWeb.Lists.TryGetList(targetListtitle);

    if (null != sourceList && null != targetList)
        ////Add a lookup field to source list with target list as lookup list
        sourceList.Fields.AddLookup(lookUpFieldName, targetList.ID, isRequiredField);

        ////Get the created lookup field from source list 
        SPFieldLookup lookupField = (SPFieldLookup)sourceList.Fields[lookUpFieldName];

        ////Set the lookup field's webID with target list webId
        lookupField.LookupWebId = targetList.ParentWeb.ID;

        ////Set the lookup field's display field 
        lookupField.LookupField = targetList.Fields[lookupValueColumn].InternalName;

        ////Finally update the lookup field
    return true;
Code snippet to create cross site lookup field with PowerShell:
Add-PSSnapIn "Microsoft.SharePoint.Powershell"

#Get the webs and lists
$webA = Get-SPWeb http://siteurl/webA/
$webB = Get-SPWeb http://siteurl/webB/
$sourceList = $webA.Lists.item("SourceList")
$targetList = $webB.Lists.item("TargetList")

#Add a lookup field to source list with target list as lookup list
$sourceList.fields.AddLookup("LookupFieldName", $, "true")

#Get the created lookup field from source list
$lookupField = $sourceList.Fields["LookupFieldName"]

#Set the lookup field's webID with target list webId
$lookupField.LookupWebId = $targetList.ParentWeb.ID

#Set the lookup field's display field
$lookupField.LookupField = $targetList.Fields["Title"].InternalName