About Me

My photo
a Dynamic and Energetic guy.....

Tuesday, April 18, 2017


Yammer and SLACK are two different technologies that we use for communication within ORGANIZATION / COMMIUNITY. Though Yammer is OLDER than Slack, we can see many similarities between these 2 products.
In simple terms “Yammer is “the enterprise social network”, and Slack is “a messaging app for teams”.
First we can identify similarities,
1)     Private message between members of the company
2)     Can create sub communities (GROUPS in YAMMER / CHANNELS in SLACK)
3)     Can share images/ videos
4)     Can join new groups / can lock
5)     Can integrate with other APIs
6)     Mobile APPS available
Yammer is,
1)     Enterprise Social Network
2)     Facebook for your company
3)     Can share posts
4)     Can follow / LIKE
5)     Can start conversations
6)     Consume information @ leisure
7)     Can use non-essential information, with interest
8)     Always having suggestions
9)     Suited for higher number of employees

1)     Made for messaging only
2)     Get direct attention to message
3)     Messages creating under one section (Topic)
4)     Alerting immediately
5)     Essential information only
6)     Powerful SEARCH includes messages / conversations / content of documents
7)     Suited fro SMS

We have to decide the exact requirement and choose the correct technology.

Tuesday, January 31, 2017

Retrieving SPList Data From SharePoint Online Site using CSOM

using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SPOnlineDataAccess
    public partial class Form1 : System.Windows.Forms.Form
        public Form1()

        private void LoadDefaultValues()
            txtSiteUrl.Text = "https://abc.sharepoint.com/sites/testsite";
            txtListName.Text = "OnlineList";
            txtUserEmail.Text = "user1@xyz.com";
            txtPassword.Text = "pass@123qaz";

        private void btnLoad_Click(object sender, EventArgs e)
            DataTable dtResults = ReadSPList();
            dataGridView1.DataSource = dtResults;

        private DataTable ReadSPList()
            using (ClientContext clientContext = GetContextObject())
                    DataTable dtListData = new DataTable();
                    //Creating DataTable Columns
                    dtListData.Columns.Add("Title", typeof(String));
                    dtListData.Columns.Add("Designation", typeof(String));
                    dtListData.Columns.Add("EmpID", typeof(String));

                    //Getting Data From SharePoint
                    Web web = clientContext.Web;
                    clientContext.Load(web, website => website.ServerRelativeUrl);

                    //Read SPList called "OnlineList"
                    List myList = web.Lists.GetByTitle(txtListName.Text);

                    // This creates a CamlQuery that has a RowLimit of 1000, and also specifies Scope="RecursiveAll"
                    // so that it grabs all list items, regardless of the folder they are in.
                    CamlQuery query = CamlQuery.CreateAllItemsQuery(1000);
                    ListItemCollection items = myList.GetItems(query);

                    // Retrieve all items in the ListItemCollection from List.GetItems(Query).

                    for (int count = 0; count < items.Count; count++)
                        DataRow dr = dtListData.NewRow();
                        dr["Title"] = items[count]["Title"].ToString();
                        dr["Designation"] = items[count]["Designation"].ToString();
                        dr["EmpID"] = items[count]["EmpID"].ToString();

                    return dtListData;
                catch (Exception ex)
                    return null;

        private ClientContext GetContextObject()
            string siteUrl = txtSiteUrl.Text;
            string userName = txtUserEmail.Text;
            string password = txtPassword.Text;
            SecureString _password = GetPasswordFromInput(password);

            ClientContext context = new ClientContext(siteUrl);
            context.Credentials = new SharePointOnlineCredentials(userName, _password);
            return context;

        private void Form1_Load(object sender, EventArgs e)

        private SecureString GetPasswordFromInput(string password)
            //Get the user's password as a SecureString
            SecureString securePassword = new SecureString();
            char[] arrPassword = password.ToCharArray();
            foreach (char c in arrPassword)

            return securePassword;


Wednesday, December 7, 2016

SharePoint Workflow Vs Microsoft Flow

Microsoft Flow

Enterprise focused solutions
Focused on individual
Automation of business processes
Automate workflows connects with SaaS (Software As A Service)
Works within SharePoint framework
Integrate with business APPs
Can integrate with Visual Studio
Automated ACTIONS based on EVENTS
Permission based on list
Actions are intended to automate the personal processes of end users (Permission)
Workflows starts with an event within SharePoint
Flows are triggered by web hooks into external systems
Possible to debug / attach with processes
Flow can take data from External systems to SharePoint

Automate digital life while accessing data from social feed

Can use defined templates, expect new templates in future
Editable using SharePoint Designer
Browser based

Development / Administration knowledge is not necessary

Monday, October 17, 2016

Move SharePoint 2013 Search Index Location to a other location

When we setup SharePoint Search Service Application using Central Administration, there is no place to set INDEX LOCATION.

With the usage of CRAWLING, the location will be filled with INDEXED files.

If we want to change the location of INDEX folder, we have only 1 options. That is using POWERSHELL.

1) We have to create a new INDEX LOCATION

$IndexLocation = "H:\New_SearchIndex"
New-Item –ItemType Directory –Path $IndexLocation

2) Then we have to get current Search Service Application to a variable

$SearchServiceName = "SearchSer"
$SSA = Get-SPServiceApplication -Name $SearchServiceName; 

3) Then we get the current Search Service Instance to a variable

$Server = "SPDEV1APP"
$Instance = Get-SPEnterpriseSearchServiceInstance -Identity $Server;

4) Then we have to get current serach topology

$Current = Get-SPEnterpriseSearchTopology -SearchApplication $SSA -Active; 

we can current topology using Central Administration. Here we should have all the components in GREEN status.

5) Create a CLONE of current Search Topology

$Clone = New-SPEnterpriseSearchTopology -Clone -SearchApplication $SSA -SearchTopology $Current 


New-SPEnterpriseSearchIndexComponent -SearchTopology $Clone -IndexPartition 0 -SearchServiceInstance $Instance -RootDirectory $IndexLocation 

7) SET new one as ACTIVE

Set-SPEnterpriseSearchTopology -Identity $Clone

If we Type,
Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa 
It will return 7 components including 2 INDEX COMPONENTS


8) Then Gets the Search Topology again,

$SSA = Get-SPEnterpriseSearchServiceApplication
$Current = Get-SPEnterpriseSearchTopology -SearchApplication $SSA -Active

9) Creates a copy of the current Search Topolog again,

$Clone=New-SPEnterpriseSearchTopology -Clone -SearchApplication $SSA -SearchTopology $Current

10) Removes the old Index Component from the Search Topology, THIS IS THE MOST CRITICAL

Get-SPEnterpriseSearchComponent -SearchTopology $Clone | ? {($_.GetType().Name -eq "IndexComponent") -and ($_.ServerName -eq $($Instance.Server.Address)) -and ($_.RootDirectory -ne $IndexLocation)} | Remove-SPEnterpriseSearchComponent -SearchTopology $Clone -Confirm:$false

11) Sets our new Search Topology as Active

Set-SPEnterpriseSearchTopology -Identity $Clone

If we Type again,
Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa 
It will return only 6 components including only 1 INDEX COMPONENT

It is set to new INDEX LOCATION. Now Do a CRAWL using Central Administration.

Thursday, September 22, 2016

Microsoft Windows Container Concept

With the increase of necessity of so much high end Servers for our deployments, a decade before we found a solution called VIRTULIZATION. Simply it allows admins to run a server on top of another server. With the high usage while having high productivity that concept has aroused so much and today, we all get the experience of Virtualization. While evolving the concept we had to face many challenges especially on hardware limitations, software cost and shortage of expert technical skills.
The architecture of virtualization is totally based on hardware sharing and never incorporated software sharing. In other words, we were unable to use HOST’s software inside a Virtual machine. Also we were unable to share OS files / kernel information with VM.

Traditional Virtualization

To overcome mentioned limitations, Microsoft tried to implement a virtualization concept that goes beyond hardware. The original concept initiated few years back, and Microsoft merged their concept with company named DOCKER and implemented Container Service. It is a features that comes with Windows Server 2016 and already implemented on Microsoft AZURE.
Azure Container Service aka ACS is introduced to create, configure and manage cluster of virtual machines in a configured environment using optimized performances. The container is the application piece which works as a virtual machine.

Containerization (aka OS Virtualization)

** Container runs an operating system, has a file system and can be accessed over a network.
With new concept, the HOST can handle many containers same as virtual machines. But the containers can share resources, OS files with the HOST as the diagram explained. With the sharing capability of Container based virtualization the container can run as LIGHT weight machine which enable efficiency. It will reduce loading time and will increase operation time.

Important Facts

1)      Releasing with Windows server 2016
2)      First we need to create a “CONTAINER HOST” (Windows HOST or a LINUX HOST) before start virtualization
3)      We can create 2 types of Containers
a.      Windows Server Containers (shares a kernel with the container host and all containers running on the host)
b.      Hyper-V Containers (container in a highly optimized virtual machine, valid only on-premise)
4)      Windows Server Container Efficiency is greater than Hyper-V Container, because of OS level virtualization
5)      Windows Server Container Security is lesser than Hyper-V Container, because of resource sharing

1)      Image is a Snapshot of a Container which includes the current status of running virtualized environment.
2)      Sandbox is the storage use to write changes in each container and can be committed to Image if wanted
1)      Container OS Image provides the operating system environment for Container, but this is Immutable.
2)      Container Repository to Keep local data including container specific installed software changes, file level changes and other OS level changes.
3)      Microservices architecture will be integrated with ACS,
a.      Container can have many micro-services (can call as SUB-SYSTEMS)
b.      Efficient and manageable resource allocation
4)      We can enable the feature using command of
 Install-WindowsFeature containers

WOW things

1)      “Docker image” can be created and it can be deployed to all environments (IDENTICAL environment of UAT, PRODUCTION)
2)      “Container Orchestration” is capable of handling,
a.      Tracking / managing containers
b.      Can CLUSTER containers for easy access
c.       Scheduling of maintenance tasks
d.      Constraint based deployments
3)      Docker template is available with visual studio 2015, we can create APPs directly to ACS
4)      Azure Container Service (ACS) is now available with on MARKETPLACE, we can create CONTAINERS on Azure
5)      REST API support to connect with third party tools
Portability among different platforms and environments 


1)      With the use of ACS, the OS will be virtualized. Hence the amount of resources will be less and it will be a Financial benefit
2)      All the containers can use single base image and it will make all the environments are identical
3)      Easy to upgrade sever kernel as one unit
4)      Direct integration of Visual Studio with Azure

My Masters