Jean Paul's Blog

There are 2 types of People in the World, One who Likes SharePoint and..

  • Microsoft MVP

  • MindCracker MVP

  • CodeProject MVP

  • eBook on SharePoint 2010

  • eBook on Design Patterns

  • eBook on Windows Azure

  • NLayers Framework @ CodePlex

  • MSDN Forums

  • .Net vs. Java

    Due to Public Demand

Archive for October, 2012

How to make a property editable by user in My Profile page?

Posted by JP on October 31, 2012

In this article we can perform some customizations for the My Profile page. The My Profile page displays properties regarding the user like:

1. Name

2. Email

3. Mobile

4. Address

5. Biography

6. Projects

Following is the screen shot of My Profile page:

image

User Profile Properties

The My Profile page is displaying the properties through User Profile service application.

image

 

​The User Profile Service Application stores information about users in a centralized location. Using the User Profile service application through Central Administration, we can:

· Create new Profile Properties

· Modify existing Profile Properties

· Enable / Disable edit functionality of a Property


 

How to make a property editable?

We can make a property read only to the user. In the current state, the property Department is not editable. You can see the property as a label in the following screen.

image

To make the property editable by the user we can use Central Administration. The administrator has to open Manage Service Applications > User Profile Service Application > User Profile Properties page as shown below:

image

From the property list choose the Edit context menu for Department property.

image

Make the Allow users to edit values of this property option and click the Save button.

Perform an IISRESET command.

image

Now back to the edit page of My Profile you can see the property is editable by the user.

image

Now you can see that the property Department  is editable.  Enter a new value for it and Save changes.

The warning symbol denotes that the property will be overridden while performing synchronization.

 

image

A service named User Profile Synchronization service is fetching new users and information from the configured Active Directory into SharePoint. The warning above says that when the next synchronization is done the value changed by user will be lost.

References

http://tinyurl.com/sp2010-myprof

Summary

In this article we have seen how to make a property editable for the user in My Profile page.  In real world scenarios we can add our own custom properties, enable or disable property edit mode by the user.

Advertisements

Posted in C# | Leave a Comment »

Calculating Size of Site Collection, Sub Sites in multiple Ways

Posted by JP on October 29, 2012

 

Calculating the Size of a Site Collection or Sub Sites is a periodic task in the life time of a SharePoint Deployment. The calculation is required in the following scenarios:

1. Determining the Site Collection usage & progress for Reporting purposes

2. Finalizing Architectural Decisions on Expansions or Splitting of Site Collections

3. Periodical Analysis of Site Quota & Usage

clip_image001

The Term refers to the Size Occupied by the entity. Please note that the Total Size calculated might be less than the Content Database Storage Size as there is surplus space allocated.

Solutions

Following are the solutions to calculate Size.

Solution 1: STSADM Command

STSADM contains a command to return Size of Site Collection.

stsadm -o enumsites -url http://Server

This command should return the number of Sites & Size for the URL specified

<Sites Count="2">

<Site Url="http://hp&quot; Id="1abb65ae-5df0-491d-aaca-cff97c93a935" Owner="HP\hp" ContentDatabase="WSS_Content_10737a6d-4f76-4a8e-b7b0-047ad8c3da1e" StorageUsedMB="69.1" StorageWarningMB="0" StorageMaxMB="0" />

<Site Url="http://hp/sites/my&quot; Id="ad2d7c45-db2b-47d4-97e4-dfddf9ec9a93" Owner="HP\hp" ContentDatabase="WSS_Content_10737a6d-4f76-4a8e-b7b0-047ad8c3da1e" StorageUsedMB="1.7" StorageWarningMB="0" StorageMaxMB="0" />

</Sites>

clip_image001[1]

STSADM is deprecated and the above Operation does not yield Drill Down results. We can continue our exploration on other possibilities.

Solution 2: Server Object Model using C#

Using Server Object Model we can write a Console Application to display more drilled down information like the size of Site, Sub Sites. Here we are including the following entities:

1. Site

2. Sub Sites

3. Folders

4. Files

5. File Versions

6. Recycle Bin

Code

Following is the code which performs the above activities, formats the size and outputs the result on the console.

static void Main(string[] args)

{

long siteCollectionSize = 0;

string baseUrl = "http://hp&quot;;

Console.WriteLine("Base Url: " + baseUrl + " (Change baseUrl to list sites starting with)");

using (SPSite mainSite = new SPSite(baseUrl))

{

foreach (SPWeb web in mainSite.AllWebs)

{

long webSize = GetSPFolderSize(web.RootFolder) + web.RecycleBin.Cast<SPRecycleBinItem>().Sum(r => r.Size);

if (web.Url.StartsWith(baseUrl))

{

Console.WriteLine(string.Format("({0} {1}", web.Url, FormatSize(webSize)));

siteCollectionSize += webSize;

}

}

}

Console.WriteLine("Total Size: " + FormatSize(siteCollectionSize));

Console.ReadKey(false);

}

public static long GetSPFolderSize(SPFolder folder)

{

long folderSize = 0;

foreach (SPFile file in folder.Files)

folderSize += file.TotalLength

+ file.Versions.Cast<SPFileVersion>().Sum(f => f.Size);

folderSize += folder.SubFolders.Cast<SPFolder>().Sum(sf => GetSPFolderSize(sf));

return folderSize;

}

public static string FormatSize(long size)

{

if (size > Math.Pow(1024, 3))

return (size / Math.Pow(1024, 3)).ToString("#,#.##") + " GB";

else if (size > Math.Pow(1024, 2))

return (size / Math.Pow(1024, 2)).ToString("#,#.##") + " MB";

else if (size > 1024)

return (size / 1024).ToString("#,#.##") + " KB";

else

return size.ToString("#,#.##") + " Bytes";

}

On executing the code above, you will get the following results.

clip_image003

You can change the baseUrl to list only the sites starting with value.


Solution 3: Using PowerShell

Following is the PowerShell script which performs the same functionality of C# code. As always PowerShell provides lightweight solutions without deployment & modification hassles for the IT Professionals.

Following is the PowerShell script which performs the same functionality.

# Returns size of site, subsites, folders, outputs in .\SiteSize.html

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

$rootUrl = "http://hp/wiki&quot;;

$rootSite = new-object Microsoft.SharePoint.SPSite($rootUrl);

$array = @()

$siteCollectionSize = 0;

foreach($web in $rootSite.AllWebs)

{

if ($web.Url.StartsWith($rootUrl))

{

$websize = GetFolderSize $web.RootFolder;

foreach($recycleBinItem in $web.RecycleBin)

{

$websize += $recycleBinItem.Size;

}

$formatSize = FormatBytes $websize;

$url = $web.Url;

# Create object and store in array

$obj = New-Object System.Object

$obj | Add-Member -type NoteProperty -name "Description" -value "$url"

$obj | Add-Member -type NoteProperty -name "Size" -value "$formatSize"

$array += $obj

$siteCollectionSize += $websize

}

}

$formatSize = FormatBytes $siteCollectionSize;

# Create object and store in array

$obj = New-Object System.Object

$obj | Add-Member -type NoteProperty -name "Description" -value "[Total Size]"

$obj | Add-Member -type NoteProperty -name "Size" -value "[$formatSize]"

$array += $obj

# Display

foreach($item in $array)

{

write-output $item

}

# Write to HTML

$array | Select-Object | ConvertTo-Html -title "Site Size" | Set-Content .\SiteSize.html

# Function calculating folder size

Function GetFolderSize($folder)

{

$filesize = 0;

foreach ($file in $folder.Files)

{

$filesize += $file.TotalLength;

foreach ($fileVersion in $file.Versions)

{

$filesize += $fileVersion.Size;

}

}

foreach ($subfolder in $folder.SubFolders)

{

$filesize += GetFolderSize $subfolder

}

return $filesize;

}

# Function to format in MB

function FormatBytes ($bytes)

{

switch ($bytes)

{

{$bytes -ge 1TB} {“{0:n$sigDigits}” -f ($bytes/1TB) + ” TB” ; break}

{$bytes -ge 1GB} {“{0:n$sigDigits}” -f ($bytes/1GB) + ” GB” ; break}

{$bytes -ge 1MB} {“{0:n$sigDigits}” -f ($bytes/1MB) + ” MB” ; break}

{$bytes -ge 1KB} {“{0:n$sigDigits}” -f ($bytes/1KB) + ” KB” ; break}

Default { “{0:n$sigDigits}” -f $bytes + ” Bytes” }

}

}


Solution 4: Advanced Tools

There are many tools available over Code Plex to calculate the size of SharePoint sites. I would like to list one of the Best Tool for this purpose.

The tool is named SharePoint Space Monitor and you can download it from:

http://scmodsoft.com/download/

You need to register an email id for getting the registration code. On executing the tool you can see the following screen with graphical charts and drill down options.

clip_image005

References

http://tinyurl.com/sp2010-stusg

Summary

In this article we have explored the Site Collection Size calculation options and tools associated. I hope the information should be useful in real world scenarios.

I will come up with a tool that makes fetching the site collection size in a quick & granular way.

Posted in C# | Leave a Comment »

Site Workflow with While, IfElse, Code Activities

Posted by JP on October 17, 2012

In this article we can explore using multiple activities in a Site Workflow created using Visual Studio 2010. The core activities we use here are:

  • Code Activity to execute custom code
  • While Activity to execute inner activities upon condition is true
  • IfElse Activity to execute branching activities based on condition
  • LogToHistoryList Activity to log information to Workflow internal history list

Scenario

A typical approval scenario is being addressed here. An Expenses list is given for approval. The entries having Amount lesser than 100 are Approved.

Pre-Requisites

Create a custom list named Expenses for using this example. Add some items into the new list as shown below:


Create Workflow

Open Visual Studio 2010 and create a new Sequential Workflow Project as shown below:


In the next page choose your site collection and click the Next button to continue.

In the appearing page choose Site Workflow as shown below:


In the last page choose the option to start workflow manually.

    

Now you will be getting the Workflow designer with default activity inside it.


Add Activities

Open Visual Studio Now you can drag and drop the following activities from the Toolbox:

  • 1 Code Activity
  • 1 While Activity & IfBranch Activity
  • 2 Code Activity inside If, Else branches
  • 1 LogToHistory Activity

As shown below:


Our idea is following:

  • Create property named CurrentItem of type object, Index of type integer
  • In the first Workflow Activated, fetch all the Expenses items
  • In the Code Activity initialize the Index field
  • Set While Activity condition until CurrentItem is not null
  • Set the If branch condition as Amount less than 100
  • Set the Else branch condition as Amount greater than or equal to 100
  • Set the Code Activity inside If branch, to update status as Approved
  • Set the Code Activity inside Else branch, to update status as Rejected
  • Use the LogToHistory activity for logging the workflow completion information

Create Entity, Properties & Fields

Please create the following class to hold the Expense Item, in order to give an Object Oriented Look and Feel.

    namespace ExpenseApprovalWorkflow

  {


public class ExpenseItem

{


  public int ID;


  public double Amount;

}

}

Inside the Workflow class, add the following properties and fields.

namespace ExpenseApprovalWorkflow.Workflow1

{


public sealed partial class Workflow1 : SequentialWorkflowActivity

{


List<ExpenseItem> Expenses = new List<ExpenseItem>();


int Index;


ExpenseItem CurrentItem

{


get

{


if (Index < Expenses.Count)


return Expenses[Index];


return
null;

}

}

}

}

The Expenses list holds the ExpenseItem type items. The Index property represents the current index of the item being processed.

Initiation Code

Back to the workflow designer, double click on the onWorkflowActivated step and add the following code.

private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)

{


using (SPSite site = SPContext.Current.Site)

{


using (SPWeb web = site.OpenWeb())

{


var items = web.Lists[“Expenses”].GetItems(“ID”, “Amount”);


foreach (SPListItem item in items)

{


ExpenseItem expenseItem = new
ExpenseItem();

expenseItem.ID = (int)item[“ID”];

expenseItem.Amount = (double)item[“Amount”];

Expenses.Add(expenseItem);

}

}

}

}

The code fetches all Expenses list items from SharePoint and adds them to the Expenses field of our workflow class.

Code Activity

Double click on the Code Activity item from workflow design view (second activity). In the appearing code window enter the following code.

private void codeActivity1_ExecuteCode(object sender, EventArgs e)

{

Index = -1;

}

The code initializes the Index field to -1. This field will be incremented in the while loop later.

While Activity

Now select the While activity from the workflow design view and choose Properties window. Choose the Condition property as Code Condition and set the Inner Condition property as WhileCodeCondition.

    

The WhileCodeCondition
represents the name of the method which evaluates the While condition and returns true / false to continue / terminate the workflow.

Paste the following code in the Workflow class view.

private void WhileCodeCondition(object sender, ConditionalEventArgs e)

{

Index++;

e.Result = (CurrentItem != null);

}

You can see the method name matches the property we have specified. The method intakes the ConditionalEventArgs for specifying the condition of while activity.

IfElse Activity

You can see that there are 2 branch activities for the IfElse activity.

    

Select the first branch item and open the Properties window. Here we can specify the following properties:

  1. Condition as Declarative Rule Condition
  2. ConditionName as IfCondition
  3. Expression as this.CurrentItem.Amount < 100

You can see them in the Properties window as shown below:

    

The ellipsis button as highlighted in red color can be used to create the Expression. There is auto-completion enabled in the appearing editor dialog.


Now select the second branch item and open the Properties window. Here we can specify the following properties:

  1. Condition as Declarative Rule Condition
  2. ConditionName as ElseCondition
  3. Expression as this.CurrentItem.Amount >= 100

Now our If and Else branches are ready to proceed with their Code activities.

Code Activity for If branch

Now double click on the Code Activity for the If branch.

    

In the appearing code view, enter the following code.

private void codeActivity2_ExecuteCode(object sender, EventArgs e)

{


using (SPSite site = SPContext.Current.Site)

{


using (SPWeb web = site.OpenWeb())

{


var item = web.Lists[“Expenses”].GetItemById(CurrentItem.ID);

item[“Status”] = “Approved”;

item.Update();

}

}

}

The code fetches the Expense Item by ID and updates the Status as Approved.

Code Activity for Else branch

Now double click on the Code Activity for the Else branch.

    

In the appearing code view, enter the following code.

private void codeActivity3_ExecuteCode(object sender, EventArgs e)

{


using (SPSite site = SPContext.Current.Site)

{


using (SPWeb web = site.OpenWeb())

{


var item = web.Lists[“Expenses”].GetItemById(CurrentItem.ID);

item[“Status”] = “Rejected”;

item.Update();

}

}

}

The code fetches the Expense Item by ID and updates the Status as Rejected.

LogToHistoryList Activity

This activity logs information into the History List of the site. Select the activity and set the following property:

    

This list is a hidden list and is not shown in the Quick Launch or All Site Content.

To view the list you need to type the List Name in address bar. For example:

    http://SERVER/Lists/workflow%20history/AllItems.aspx

You can see various entries in the History List as shown below:

Using the History List we can verify the workflow instances being executed and their log information for troubleshooting.

Deploy the Workflow

Now we are ready to execute our workflow. Build the project, Right click on the solution and Deploy it.

Inside SharePoint

Back in SharePoint choose the Site Workflows and start our workflow.

    

Wait for a while for the execution to be completed.


Back to the Expenses list you can see the Status column being updated for the items.


You can open the Workflow History list to view the log entry as shown below:


This concludes our playing with Workflow activities.

References

http://msdn.microsoft.com/en-us/library/ms446847.aspx

Summary

In this article we have explored creating a Site Workflow using multiple activities. To summarize with following are the activities we have explored.

  • IfElse activity
  • While activity
  • Code activity
  • LogToHistoryList activity

I hope this example should provide knowledge to address complex workflow scenarios in your programming life. The source code contains the example we have discussed.

Posted in C#, SharePoint | Tagged: , , , , , , | Leave a Comment »

Error Scenario :: FILENAME.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see …

Posted by JP on October 16, 2012

While working with PowerShell script I received the following error:

FILENAME.ps1 cannot be loaded because the execution of scripts is disabled on this system.  Please see “get-help about_signing” for more details.

Solution

Run the following PowerShell command (in a new script / in the command line)

Set-ExecutionPolicy RemoteSigned

Posted in C# | Leave a Comment »

Error Scenario :: The field with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite.

Posted by JP on October 16, 2012

While working with a list definition I received the following error:

Error: The field with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite.

Solution

Overwrite your existing field definition using the attribute Overwrite.

<Field Overwrite=”TRUE”></Field>

Else, Try setting a new GUID

Posted in C# | 2 Comments »

Error Scenario :: Server Error – No available sandboxed code execution server could be found.

Posted by JP on October 15, 2012

While working with SharePoint 2010, I encountered the following error: No available sandboxed code execution server could be found.

image

Solution

Start the SharePoint 2010 User Code Host windows service

Steps

1. Run services.msc from the run window

image

 

2. Locate the service and click the Start button

image

Hope your problem is fixed!

Posted in SharePoint | Tagged: , , , , | Leave a Comment »

Three-state Workflow with Email Notification

Posted by JP on October 14, 2012

In this article we can explore the Three-state workflow of SharePoint 2010. Please note that this is an Out-of-the-box workflow also known as Built-in workflow.

image

Pre-Requisite

For viewing the email notifications generated by the workflow, you need to configure Development Machine with SMTP receiver tool.  Please view the following article to configure email.

Email

What is the purpose of Three-state workflow?

The three-state workflow can be used to track status of list items. There are 3 States involved in the whole process.  For each state change there will be Email Notification performed by this workflow.

For example, we can use this workflow to:

  1. Track Project Tasks
  2. Track Product Issues
  3. Track Reimbursement Reports

The Issue Tracking template of SharePoint is built to work with this workflow as it contains a Choice column with 3 different states.

Exploring the Workflow

For starting with create a new list using the Issue Tracking template as shown below:

clip_image002

After creating the list we need to Associate workflow with the list using List tab > Workflow Settings> Add a Workflow.

clip_image003

A wizard page will be started as shown below.

clip_image004

Select the Three-state workflow and enter a unique name for the workflow. In the bottom of the page you can see the Start Options. Check the Start this workflow when an item is created check box.

clip_image006

Click the Next button to continue.

Now you will be prompted with the second page of the Workflow as shown below:

clip_image008

Please note that the Three-state workflow requires a column with 3 states as the ‘Choice’ field. In this list the Issue Status column is selected as the ‘Choice’ field. The rest 3 drop down lists show the 3 different value selections for the Issue Status to set the Active / Resolved / Closed states.

Coming down to the page you can set Emailing options like Task Information, Email Subject and Body etc. Email Notifications are done to the involved persons.

clip_image010

Leave the default options and click the OK button.Now your workflow is ready to send email notifications on task creation.


Email Notification

For viewing the emails generated by the workflow you need to have:

· Emails Server configured in Central Administration

· E-mail Property set in User Profile

· Smtp4dev tool running

Please view the following article to configure email.

· Configuring Email for Development Server

Testing Workflow

Now let us test the workflow by creating a task. Create a Task and make sure you select a valid user having email for the Assigned To column.

clip_image012

Save the changes and you should see the smtp4dev tool caught the email as shown below.

clip_image014

You can see that the IDvalue is being highlighted. This concludes our experiment with Three-state workflow.

Editing the Workflow

We can associate multiple workflows with a list or library. To edit an existing association use the Workflow Settings > Workflow Settings menu item.

clip_image015

In the appearing page you can view the existing workflows associated and edit the settings.

clip_image017

The Workflows in Progress column displays the number of workflow instances currently active.

There are additional links to Add / Remove workflows, View workflow reports too.

Where should I apply this Workflow?

We can use this workflow for the following requirement scenarios:

· Product or Project approval process where a new product idea can be traversed through different stages of approval before acceptance.

· Issue tracking system where a customer can create an issue item, the support team updates it to resolved, Customer can change the status to Closed or Active again.

· Bug tracking system where the QA can create a task item, developer can change it to Resolved, QA can reopen it.

The effective use of Three-state workflow should decrease the delivery time for a tracking system with email notifications. We can also use custom lists with transition properties for using the Three-state workflow.

Advantage

This workflow provides a quick solution for the state tracking scenario.

image

Otherwise, the same functionality requires multiple days of development with state, email integration, deployment & management hassles.  Thanks to SharePoint as it gives us the same functionality in minutes. 🙂

References

http://tinyurl.com/sp2010-3statwf

Summary

In this article we had explored the Three-state workflow of SharePoint 2010. Following are the point’s worth to be summarized:

· Three-state workflow tracks status changes

· A Choice column is required for the list / library to use this Workflow

· Choice column requires at least 3 fields

· Issue Tracking list template is apt for this workflow

· Association of Three-state workflow with list instance is required

· Email notification is enabled for Three-state workflow

Posted in SharePoint | Tagged: , , , , | 2 Comments »

Configuring Email for Development Server

Posted by JP on October 14, 2012

In this article we can explore how to configure Email for Development Server. In real world development scenarios you need to work with Email enabled lists / workflows / code.

Email

Scenario

Your customer reported a problem with Email sending from a web part you have developed. You need to ensure the piece of code works fine in your development machine. As there is no email server configured in your machine – How to test this code?

Solution

We can set up a Development Server with emailing enabled. Setting up Email for the Development Server along with a Receiver tool you can ensure that emailing code is working perfect.

Steps

Following are the steps involved:

1. Configure outgoing SMTP server

2. Set Email property for User Profiles

3. Install smtp4dev tool

4. Test Email Code

Please note that I am using a Windows 7 64-bit machine for working with this. The same configurations should work for Windows Server development machine.


Configure outgoing SMTP server

Open Central Administration and click on the System Settings category from the left.

image

In the appearing page click on the Configure outgoing e-mail settings link highlighted above. You should get the page given below.

image

Enter the Outbound SMTP server as your machine name. Please enter a name instead of IP Address or localhost.

Enter the From and Reply-To address.

Click the OK button to save the changes.


Set Email property for User Profiles

As the next step we need to set the user profile property E-mail for testing the feature. You can set this through:

1. My Profile of each user

2. Central Administration for all users

Let us use the Central Administration way as we can set for multiple users. Open Central Administration > Manage service applications > Select User Profile Service Application > Click Manage button from toolbar.
image

In the appearing page click on the Manage User Profiles link as highlighted below:

image

In the appearing page search for user and from the result choose Edit menu item.
image

In the Edit profile page set the Work-email property and save changes.

image

Install smtp4dev tool

Now we can try installing the smtp4dev tool (a wonderful tool) that captures the Port 25 of your machine. You can download the tool from following location:

http://smtp4dev.codeplex.com/

Click the Download button on the appearing page.

image

Run the downloaded file and you should see the following screen.

image

By default the tool started to listen on Port 25. You can minimize the tool and it is available in the system tray.

Note Running another instance of the smtp4dev tool cannot listen to the same port 25. You need to invoke the previous copy of the tool from system tray to view any email messages.

Test Email Code

Now we are ready to test the email code. Start a new SharePoint Console application, change the project properties to .Net Framework 3.5 and replace the Program class content with following code.

using System.Collections.Specialized;

class Program

{

static void Main(string[] args)

{

using (SPSite site = new SPSite("http://localhost&quot;))

{

StringDictionary messageHeaders = new StringDictionary();

messageHeaders.Add("to", "to@server.com");

messageHeaders.Add("cc", "cc@server.com");

messageHeaders.Add("from", "from@server.com");

messageHeaders.Add("subject", "Email Subject");

messageHeaders.Add("content-type", "text/html");

SPUtility.SendEmail(site.OpenWeb(), messageHeaders, "Email Body");

}

}

}

For the time being we are using dummy email address. Try executing the code. You can see the email being captured by smtp4dev tool.

image

References

http://tinyurl.com/sp2010-confemail

Summary

In this article we have explored how to configure email server for a development machine and use smtp4dev tool to capture the emails generated from the machine. You can use the same configuration to test other emails through Workflows, Web Parts etc. that are generated through SharePoint.

Please note that here we are setting up a development machine email server and for configuring the actual email service you need to check the link from References section.

Posted in SharePoint | Tagged: , , , , , | 6 Comments »

How to disable SharePoint Designer?

Posted by JP on October 12, 2012

In some cases we need to prevent the user from using SharePoint Designer.

We can DISABLE it using Central Administration.

1. Open Central Administration and choose Manage web applications

image

2. In the appearing page select your Web Application and choose General Settings > SharePoint Designer as shown below

image

3.In the appearing dialog uncheck the Enable SharePoint Designer check box

image

4. Click the OK button to save the changes

 

5. Refresh your site to check Designer is available

 

Good Luck!

Posted in SharePoint | Tagged: , | 2 Comments »

Senor! Target Achieved – Microsoft MVP

Posted by JP on October 5, 2012

Dear Friends,

I would like to post a personal one!

As you all forecasted & wished I received Microsoft MVP Award on Oct 01, 2012.

(For those who do not know what is Microsoft MVP – This is the Best Award in the world for Microsoft Technology Professionals)

It is really a wonderful feeling of getting recognized for the tech authoring, programming & sharing efforts.

MVP Screen 1

As some of my friends requested and queried I am giving my reply here.

What is the best way to be a Microsoft MVP?

From my experience I can say that find a technology you enjoy and wanted to learn more.  Choosing a technology you like, keeps you energetic in the journey of article authoring, tool programming, forums.

As time goes by.. enjoy the learning.

Above all, through sharing we are giving back to the community that helped us during our search for an important code.

How long it will take to an MVP?

MVP is recognition for the past 1 year efforts, but not get disappointed if you did not get one in your first attempt.  I had spent exactly 2 years till reaching Microsoft MVP.  But i enjoyed the journey through encouragements & support from the community especially:

  1. C Sharp Corner MVP Awards
  2. DotNetSpark Member of Month Awards
  3. Points earned through MSDN Forums
  4. Knowledge, Confidence, Popularity gained
  5. Satisfaction through solving problems
  6. Energized being with Technical Guys

Note: Please do not focus on multiple technologies at a time, as MVP  is for particular technology.  eg: MVP SharePoint, MVP ASP.NET etc.

What are the achievements above MVP?

To my knowledge Microsoft MVP is the most prestigious award in the awards category.  Surely there are other certifications above MCPD which demand niche growth in the technology level.  For example:

  • MCM (Microsoft Certified Master)
  • MCA (Microsoft Certified Architect)

MCM & MCA are really cost consuming ones and seems to be worth only if you are thinking like a business mind.  REINVESTING in the CAREER which made you earn millions.

How to find the time for MVP practice?

I have heard most of the people saying they do not have the time – It is really a True Factor If you think it is True, and False if you think False.    So how come there are people who achieved the same?  We can see there are no additional hours or jet engine in their possession, we all work for 40-50 hours  per week for a living.   My simple solution for this would be to multi-target your work as work, learning – later in the evening at home you can create a document based on the learning, next day optimize it and publish.  Later your own code will result as part of a search and this will save a lot of time for you & organization.  There are more complex solutions to increase productivity through Time Locked Performance, NLP etc. which require a training session to explain.

Mistakes I made?

Nobody asked this, but i have to reveal.  Please do not start the MVP track by choosing a technology you does not have experience / no passion with.  I did the mistake by going with a friends advice and worked 21 hours per day for weeks in creating eBook – I really mean 21 hours – it is through a combination of sleep optimization & tai-chi – those guys who work with me know the killer style of my work.  Later i realized that the posts were not much valuable to community & neither useful for me in gaining a career.  But i gained good knowledge on it even though the MVP track was not met.  So please do not repeat the same mistake.  Choose a technology you like and wanted to grow with enjoying each article!

Above All

I had a habit of using “Above All” please bear with me.  Above All if you are a passionate person you can find the right mentality people through the community.  There are great leaders who will inspire you and energize in the growth.  Back to my MNC experience in India, the company & colleagues wanted me to grow as a manager leaving my tech passion under utilized.  I wanted to say that this is a wrong move deviating from fundamentals and I believe “Only a Passionate Developer can become a Passionate Manager”, else are the results of project failures, non-enjoyable-work-environments.   In India the IT industry fetching lot of money, more people jump to B.Tech / MCA and the real talented guys are less than 10%.  So through the MVP path you can keep in touch with other passionate & highly efficient guys who recognize your simple efforts and encourage to attain better goals.

MS MVP is a Dream among MS community members and a Dream is necessary to make us passionate in the free time!

Gratitude

I would like to remember the people who helped in attaining the same.

  • Tanmay Kapoor He is the Indian MVP Lead and helped me in getting evaluated and selected.  I am thankful to Tanma & MVP Award Committee for recognizing my efforts.  I will be continuing my efforts to serve the Microsoft Community.
  • Dhananjay Kumar It was around 2 years back I met DJ for the first time, interestingly I was interviewing him :).  Before the interview I was casually passing by and  noticed the special vibes of him and felt this is a special kind of person.  Later talking with him i realized the real passion of a technology coated pro.  Seeing his MVP Card I was quite inspired to be an MVP!  He recommended me to start writing each day whatever we learn.  His honest advice helped me in start with articles.
  • Mahesh Chand He is a true leader for all the .Net Tech Authors. I am thankful for the early days motivation he had given me while posting my first few articles in CSH.  I see that lot of MVP created through CSH (c-sharpcorner.com)
  • Praveen Kumar He is the Chief Editor of CSH and a very calm & quiet person.  I am thankful to Praveen for supporting me through CSH by editing, correcting, posting, styling articles – without which I would not have grown.
  • Habib Z He was my manager and ex-employee of Microsoft, Dubai.   A true motivator and thinker, he chose my resume seeing the certifications.  He was the first person who adviced me to work towards Microsoft MVP.  I am thankful for his motivations & advices.
  • Sanoob K He is my friend, ex-colleague, thoughtful, focused achiever and a tiger-brand in SharePoint 🙂 We started with SharePoint 2007, four years back and we were like minded in enjoying this technology.  I am thankful for his continued support in motivation, proof reading books & resolving my technical queries.
  • Pankaj Mishra I should remember the first web site where I started posting articles.  It was Dot Net Spark and i continue posting there.  His rewards through DNS helped in getting a grip over the technical community and used the confidence to migrate to CSH.  Thank You Pankaj for the supports.

I would like to thank  to all my readers, co-authors, mentors over CSH & DNS.

I am thankful to my old team IONBOND who encouraged me in the initial days – Haq (an innocent person apt for 18th Century :)) for his honest & simple wishes, Swaminathan Sayee (a tough person and ex-colleague who taught me Time Bound Execution), Gokila (a pleasant natured, multi-skilled person), Jayakumar (a talented programmer who taught me the nature of a good hearted person – lesson worth hundred books i read).

Additionally there are my friends Asuthosh (a solid c#, oops enthusiast), Boby (veteran SharePointer), Don (niche logic person), Neeb (a techy & growth enthusiast) who all are in common passionate about Microsoft Technologies and wanted to grow higher.  I think they all should come to the article authoring, as always we start after ensuring a success from group member – the same Certification Strategy. I am thankful for their support and confidence in me.

Moving forward I will be continuing my exploration with SharePoint & serving the community.  There are lot more unexplored features, programming & fun ahead with SharePoint 2010, 2013.  After all SharePoint is our Hydrogen, Oxygen & Carbon Dioxide!!!

Thanks to my CSH Friends for the Comments! Link

Posted in C# | Tagged: | 17 Comments »