Friday, April 08, 2011

How to hide View All Site Content for everyone except for Admin users in SharePoint 2010

look for this tag on default.master or the custom master page you are using:

<SharePoint:ClusteredSPLinkButtonid="idNavLinkViewAllV4"runat="server"PermissionsString="ViewFormPages"NavigateUrl="~site/_layouts/viewlsts.aspx"ImageClass="s4-specialNavIcon"ImageUrl="/_layouts/images/fgimg.png"ImageWidth=16ImageHeight=16OffsetX=0OffsetY=0Text="<%$Resources:wss,quiklnch_allcontent_short%>"

Replace the PermissionsString property in above tags from "ViewFormPages" to "ManageWeb"
accesskey="<%$Resources:wss,quiklnch_allcontent_AK%>"/>

Hide the Recycle Bin link on the left hand bar for non-admin users in SharePoint 2010

look for this tag on default.master or the custom master page you are using:

<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/recyclebin.aspx" id="v3idNavLinkRecycleBin" ImageUrl="/_layouts/images/recycbin.gif" Text="<%$Resources:wss,StsDefault_RecycleBin%>" PermissionsString="DeleteListItems" />
and the tag

<SharePoint:ClusteredSPLinkButtonrunat="server"NavigateUrl="~site/_layouts/recyclebin.aspx"ImageClass="s4-specialNavIcon"ImageUrl="/_layouts/images/fgimg.png"ImageWidth=16ImageHeight=16OffsetX=0OffsetY=428id="idNavLinkRecycleBin"Text="<%$Resources:wss,StsDefault_RecycleBin%>"CssClass="s4-rcycl"PermissionsString="DeleteListItems" />
Replace the PermissionsString property in above tags from "DeleteListItems" to "ManageWeb"

Friday, March 25, 2011

How to restore SharePoint 2010 Site Templates especially for Sites migrated from MOSS

After much painful debugging, I managed to resolve the issues related to Site Template save and restore for SharePoint 2010 based Sites. I noted that the SharePoint 2010 site itself had corrupted lists "Calendar", “Issue” etc (which does not get migrated properly from MOSS), which I had to delete and then created a new lists (such as “IssuesRegister”) in SharePoint 2010 and painfully relinked all workflows, data views, dispforms etc. I also deleted all the master pages (starting with clarity_) and styles library as they were remains from MOSS/SharePoint Online instance and was causing incompatibility issues. Anyways after all this, I saved the site as Site Template and EUREKA IT WORKED!!

Once I got the Site Template, I restored the site on new server and got a series of missing features exceptions (with correlation IDs - for example "The site template requires that the Feature {e34b0b8e-6e21-49ad-8d2f-530a29d61175} be installed on the farm or site collection"). I painfully debugged through each missing feature ID and learned the following (in a very painful way again)
1)   Ensure that all Site Collection and site Features in Source and Destination SharePoint servers are identical.
2)   I used the Powershell script Get-SPFeature -Site <Site Collection name> | Sort Id | FT DisplayName,Id to get all features deployed and matched against the list of feature names from here against the corresponding missing feature complained by SharePoint 2010 on the new box. Once I identified the feature missing, I went ahead and enabled the feature (see point 2 below)
3)      The Following features are required for restoring all SharePoint 2010 Site Templates that were migrated from MOSS (For e.g. - http://shp2010test is the new server where I tried restoring the new site based on SharePoint 2010 Template) – USING POWERSHELL:
a.       Enable-SPFeature LocalSiteDirectorySettingsLink -Url http://shp2010test
b.      Enable-SPFeature InPlaceRecords -Url http://shp2010test
c.       Enable-SPFeature SignaturesWorkflow -Url http://shp2010test
d.      Enable-SPFeature HelpLibrary -Url http://shp2010test
e.      Enable-SPFeature LocationBasedPolicy -Url http://shp2010test
f.        Enable-SPFeature OpenInClient -Url http://shp2010test
g.       Enable-SPFeature MobileExcelWebAccess -Url http://shp2010test
h.      Enable-SPFeature TaxonomyFieldAdded -Url http://shp2010test
4)      Strangely there was no theme applied to new site and so I had to reset the theme on this new site to inherit from parent and EUREKA! The site was live and all workflows seems to be working ok!

Anyways all my pain and suffering today would hopefully lead to more seamless and easy migration from SharePoint 2007 to SharePoint 2010 and then moving migrated sites between SharePoint 2010 servers.

Sunday, March 13, 2011

Hide List Columns on Display, Edit and New Forms using JQuery

Follow the steps below to quickly hide List Columns on Display, Edit and New Forms using JQuery:
1) Create a scripts library in your site (or use the one you currently use to store your Javascript/*.js files)
2) Download the latest version of the JQuery file from here - http://code.jquery.com/jquery-1.5.1.min.js
3) Copy the above *.js files (namely "jquery-1.5.1.min.js") to the scripts folder created in Step 1
5) Open the form/page (such as NewForm.aspx or EditForm.aspx) where you want to hide editable list columns and add the following script at the end of the page (preferably below the end </style> tag:


<script language="javascript" type="text/javascript" src="/board/scripts/jquery-1.5.1.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
  $(nobr:contains("All Day Event")').closest('tr').hide();

});
</script>
6) Ensure that you replace the List Column name that you want to hide in the above script sample
7) Also note that on DispForm.aspx, you need to slightly modify the above script and look for "h3" tag instead of "nobr" tag in the above script

Auto populate current logged in user name in SharePoint 2010 People Picker control

Follow the steps below to Auto populate current logged in user name in SharePoint 2010 People Picker control:
1) Create a scripts library in your site (or use the one you currently use to store your Javascript/*.js files)
2) Download the latest version of the JQuery file from here - http://code.jquery.com/jquery-1.5.1.min.js
3) Dowload the latest version of the SPServices JQuery library from here - http://spservices.codeplex.com or http://spservices.codeplex.com/releases/55660/download/171214
4) Copy the above *.js files (namely "jquery-1.5.1.min.js" and "") to the scripts folder created in Step 1
5) Open the form/page (such as NewForm.aspx) where you want to default the People Picker control to the current user logged in and add the following script at the end of the page (preferably below the end style tag:


<script language="javascript" type="text/javascript" src="/board/scripts/jquery-1.5.1.min.js"></script>
<script language="javascript" type="text/javascript" src="/board/scripts/jquery.SPServices-0.6.0.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
 var userName = $().SPServices.SPGetCurrentUser({
  fieldName: "Name"
 });
 $("textarea[title='People Picker']").val(userName);
 $("div[title='People Picker']").text(userName);
});
</script>








Note - you need to replace the src property values above to reflect the correct path to the Javascript files downloaded in above steps and saved in the "scripts" folder.

Saturday, October 30, 2010

Creating performance counter category Enterprise Library Caching Counters.An exception occurred during the Install phase (Enteprise Library 4.1 October 2008)

Solve this weird issue by running "lodctr /r" (from Start > Run) or command line. For additional reference on what this command means check the TechNet article at : http://technet.microsoft.com/en-us/library/dd363694(WS.10).aspx

Thursday, September 02, 2010

Innovative Business solutions for the Cloud

Check out how this Microsoft GOLD Partner is leveraging the Microsoft Cloud to deploy "business solutions" readily deployable on the Cloud - http://portalnow.iqgroup.com

Wednesday, August 18, 2010

The form cannot be rendered. This may be due to a misconfiguration of the Microsoft SharePoint Server State Service

Fix this issue very quickly by following the steps below:
1) Open up the SharePoint 2010 Power Shell Command Prompt (can be found by clicking Start > All Programs > Microsoft SharePoint 2010 Products > SharePoint 2010 Management Shell locally on the SharePoint 2010 web server.
2) Run the following commands (in the sequence as mentioned below):
a. $serviceApp = New-SPStateServiceApplication -Name “State Service”
b. New-SPStateServiceDatabase -Name ”StateServiceDatabase” -ServiceApplication $serviceApp
c. New-SPStateServiceApplicationProxy -Name ”State Service” -ServiceApplication $serviceApp -DefaultProxyGroup

Wednesday, May 12, 2010

There is no file with URL 'IWConvertedForms .cvt' in this Web.System.IO.DirectoryNotFoundException: There is no file with URL 'IWConvertedForms/

A very annoying error for sure. Easily resolved by deactivating and reactivating the feature "IPFSWebFeatures" found %Program Files%/%Common Files%/microsoft shared/web server extensions/12/Template/Features

Use the following commands:

stsadm -o deactivatefeature -filename IPFSWebFeatures\feature.xml -force -url

stsadm -o activatefeature -filename IPFSWebFeatures\feature.xml -force -url

Tuesday, May 11, 2010

When creating a new site from a custom STP site template file, you get the "File Not Found" error after site is created

The problem could be that the master page did not map properly. To check and correct the problem, you have to "cheat" by directing your browser to the new site's master page settings page. That is done by replacing "default.aspx" in the current URL with "_Layouts/ChangeSiteMasterPage.aspx" e.g. http://site/web/default.aspx becomes http://site/web/_Layouts/ChangeSiteMasterPage.aspx.

After the page loads, you should see two error messages noting problems with both the site and system master pages.

In the Site Master Page section, ensure that the "Specify as master page to be used by this site and all sites that inherit from it" radio button option is selected. In the drop down below it, ensure that the "default.master" is selected. Scroll down to the System Master Page section. Ensure that the "Select a system master page for this site and it's subsites to inherit" option is selected and once again set the dropdown below to "default.master". Scroll down to locate the "OK" button and click it to reset the site master pages and fix the site.

Tuesday, April 06, 2010

Tips and Tricks to get CKS Forms Based Authentication Solution working properly

Codeplex FBA (http://cks.codeplex.com/releases/view/17901) is a great tool and its configuration is defined in great detail on this article (http://devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx). However there are a few gotchas to take care of when configuring MOSS on Windows Server 2008 box:

1) After you update the hosts file with the names such as:
127.0.0.1 projectextranet.test.com
127.0.0.1 projectextranet
After you create the SharePoint Application and Site collection successfully and try to access the site, you would notice that when you try to access either of the above sites through IE, it will prompt you for a username and password and the logon prompt keeps appearing that will eventually timeout. The quick fix for this is explained here - http://support.microsoft.com/kb/896861/en-us (apply the Microsoft Fix tool)

2)Once you have configured your FBA and you try to add the spadmin user created in the steps as described in article above through Central Administratio for the extranet site, it will not resolve the name. This error happens if your Central Administration Application Pool account does not have access to the FBA database created earlier. So make sure you give at least db_owner access to the Central Admin App Pool account and then perform iisreset. EUREKA! Now it will find your users in FBA DB

3)You get an error "Dependency feature with id 01aa8d8b-000a-4c35-8f4f-5d1280377650 for feature 'FBAManagementSelf' (id: 23c44729-fb03-4882-a0bf-c6fb3ddd81fd) is not installed." - Fix this by downloading the latest copy of FBA here (http://cks.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=97072). Compile and build the deploy folder using WSPBuilder and then use the new CKS.FBA.wsp file to deploy to your farm

Wednesday, February 24, 2010

how to activate SharePoint Tool Basket Language files when using sptoolbasket from Codeplex

Simple yet tricky this little annoying thing when deploying the SPTOOLBASKET from Codeplex (http://sptoolbasket.codeplex.com/releases/view/21960). In order to activate the Document Ratings Feature, you need to activate prior the feature named "SharePoint Tool Basket Language files". But wait a minute this cannot be activated from Site Settings > Site Collection Features. You would need to do this for the Web Application via Central Administration > Manage Web Application Features (and select your web app). Simple as that but can be annoying to figure out especially if you are working on a project burning the midnight oil!

How to create a Windows Shell Right Click command to easily add your WSP to the Solution Store

How to create a Windows Shell Right Click command to easily add your WSP to the Solution Store.
Open regedit.exe and then make following changes in registry

Right Click on "HKEY_CLASSES_ROOT" and create a New Key called ".wsp" and set the value to "wspfile"

Right Click on HKEY_CLASSES_ROOT\wspfile and create a New Key called "shell"

Right Click on HKEY_CLASSES_ROOT\wspfile\shell and create a New Key called "Add Solution"

Right Click on HKEY_CLASSES_ROOT\wspfile\shell\Add Solution and create a New Key called "command" and set the value to "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o addsolution -filename "%1"

Note in all the above values, make sure you remove the first and last inverted commas on values

Now go back and open Windows Explorer and locate your WSP file on your file system. Right Click on that file with your mouse and EUREKA you will find "Add Solution" as a new Windows Shell command. Select this option to add the WSP to the MOSS Solution Store

Friday, February 19, 2010

Site collection could not be restored. If this problem persists, please make sure the content databases are available and have sufficient free space

This has to be one of the most difficult issues I had to solve with restoring a previously created SharePoint backup. Here are the different steps (based on your own scenario) I took to solve the above problem and restore my site collection:

Scenario 1)
This issue occurs if the computer that is running Windows SharePoint Services has insufficient free disk space that is available to host the restored Windows SharePoint Services Web site. This issue may also occur if the Windows SharePoint Services database has reached its maximum allowed size.


Scenario 1 Solution) To resolve this issue, make sure that the computer that hosts the Windows SharePoint Services Web site has sufficient free disk space that is available before you restore the Windows SharePoint Services Web site. When backing up or restoring large site collections make sure that the site collection is set to "no access" if it exists already. Whether the site collection exists or not the -overwrite parameter can be used to bypass conflicts. stsadm -o restore -url -filename -overwrite



Scenario 2) The site collections listing page will give a clue.The site you were trying to restore was already listed there but when you tried to load it the site didn't work.

Scenario 2 Solution) •Detach and Reattach each of the content db's , this removed the site collection listing from CA but the error still occurred
•Run stsadm -o databaserepair against the database's and it removed a bunch of orphaned records.



Scenario 3) There is tonnes of disk space (20 GB free for the restore of a 3 GB site collection) and tried again. It died with the same error. You run the following query in the SQL Server Management Studio:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

As it turns out, the database server was trying to restore the site collection into was running SQL Server Express Edition had a file size cap of 4 GB. When this "farm" was set up, it was done so with a Basic install which by defaul installs SQL Express and inherits it's limitations. The site collection that was used was trying to restore broke the 4 GB limit and as a result the stsadm tool thought there wasn't any disk space available, when really there was a bunch to be had.

Scenario 3 Solution) Upgrading SQL Server Express to Developer/Standard/Workstation/Enterprise -
As a result upgrade the OFFICESERVERS instance of SQL Server running on that machine from Express to Developer (you can upgrade it to Developer/Standard/Workstation/Enterprise, whatever you have in terms of media/licensing). This ends up being pretty easy, you simply find the media/installer and run the setup.exe that you normally would but with an added argument of SKUUPGRADE=1.

setup.exe SKUUPGRADE=1

When the install wizard gives you get a chance, select the OfficeServers instance and upgrade the database engine. If you want a more detailed walkthrough, one is available here. When you're done, run the same SQL query above and the product edition should no longer be Express. After that small adventure, the restore will work like a charm.



Scenario 4) A lot of transactions in the ULS Logs and SQL Server Logs are growing out of control during the restore process that appear to interrupt the restore, especially if its a very large one.

Scenario 4 Solution) Try the following:
1. Stop IIS
2. Perform the Restore
3. Restart IIS
Basically you are preventing any SharePoint transaction from taking place while you perform the restore.


Scenario 5) Restore runs super slow (for example 6 hrs for a restore of 7 GB backup file) and right at the end throws the "insufficient space" error.

Scenario 5 Solution) Try the following:
1) Delete the Web Application (incl. content database) (OPTIONAL STEP IF YOU ARE OK TO DELETE - MAKE SURE YOU HAVE A DATABASE BACKUP AND STSADM FULL SITE COLLECTION BACKUP)
2) Truncate content database transaction logs in SQL Server
3) Turn Mirroring off on all databases on the SQL Server
4) Ensure that the account performing restore has dbowner and dbcreator permissions

Monday, November 30, 2009

Searching internal documents is not working. The search service indexes all the documents ok, no errors in the logs etc but no results are displayed

Check the alternate mappings as this usually is the issue. For example if the default mapping is http://sitename.companyname.com/sites/sitename1 it would index but not display the results. Changing the default value to http://server (which is the server name of the MOSS web server) and the Extranet mapping to http://sitename.companyname.com/sites/sitename1 then the results will be displayed.

Sunday, November 08, 2009

Team Collaboration lists such as Calendar, Tasks lists are unavailable within moss publishing site - How do i fix this?

Very Simple - Goto Site Settings > Site Administration > Site Features and Activate the "Team Collaboration Lists" feature

An error occurred during the compilation of the requested file, or one of its dependencies. The type or namespace name 'Publishing' does not exist

As simple as this error sounds - "An error occurred during the compilation of the requested file, or one of its dependencies. The type or namespace name 'Publishing' does not exist in the namespace 'Microsoft.SharePoint' (are you missing an assembly reference?)", it can be tricky to solve.

The easiest solution I have found to solve is to include the following snippet below your includes in your master page.

<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register TagPrefix="PublishingVariations" TagName="VariationsLabelMenu" src="~/_controltemplates/VariationsLabelMenu.ascx" %>
<%@ Register Tagprefix="PublishingConsole" TagName="Console" src="~/_controltemplates/PublishingConsole.ascx" %>

<%@ Register TagPrefix="PublishingSiteAction" TagName="SiteActionMenu" src="~/_controltemplates/PublishingActionMenu.ascx" %></strong>

Saturday, November 07, 2009

How to fix the issue "A feature with ID ... has already been installed in this farm. Use the force attribute to explicitly re-install the feature."

Use -force flag on your deploy operation. For example:

stsadm -o deploysolution -name MyBranding.wsp -immediate -force
stsadm -o execadmsvcjobs
stsadm -o activatefeature -name Mybranding -url http://testurl -force

Monday, October 05, 2009

The minimum accounts you need to install MOSS using MS recommended best practices

Ok - I have been asked this question several times and have also noticed that the right accounts are not used during MOSS installations. Here is a quick summary of all the accounts you need pre-configured in your AD prior to installing MOSS:

  • mosssetupUSER – Pass@word1 – Moss Setup user – Member of: Administrator – SQL: dbcreator and security-admin
  • sqlserversrvc – Pass@word1 – User to create db’s and sql configs – Member of: Administrator – SQL: dbcreator and security-admin
  • caapooldbaccessUSER – Pass@word1 – caa app pool USER acct and to access db – Member of: Administrator – SQL: dbcreator and security-admin
  • sspappool@AIFSMOSS.local – Pass@word1 = SSP App Pool Identity – User rights and entitlements assigned automatically
  • sspserviceUSER – Pass@word1 – SSP Timer/Web Services – User rights and entitlements assigned automatically
  • WssSearchSrvcUSER – Pass@word1 – used for wss search – User rights and entitlements assigned automatically
  • searchcontentaccessUSER – Pass@word1 – default user for search content access – User rights assigned automatically
  • searchspccontentaccessUSER – Pass@word1 – user for search specific content access – read access to external content source
  • userprofilesaccessUSER – Pass@word1 – USER who access the AD and user properties – read rights to AD
  • excelservicesUSER – Pass@word1 – USER to access excel content soruces – read rights to excel content sources

Thursday, August 13, 2009

Why should i care about WSP / solution packages in MOSS

Often I find developers writing custom batch scripts, stsadm commands to deploy their customizations ( Site definitions, field types, event receivers, workflow, and features) to MOSS staging/production farms. This is considered a very bad practice due to the following reasons (but not limited to):
1) A farm disaster happened but luckily you had your scripted backup of your farm. But when you restore, web parts are throwing errors
2) Unable to isolate the WebPart errors as the WebParts were manually installed
3) What about WebPart dependencies? Forgot to restore them!
4) Ok I got the WebPart somehow working (VS debugging etc) but wait where are the images?
5) What about the killer Web.config changes in new farm? Did you back that up too?
6) Now that you fixed the WebPart and customizations somehow, how will you deploy this fix to each server in the farm - manually? What if there are 16 servers in the farm?

Bottomline, always wrap up your customization as a solution package (WSP) prior to deploying to MOSS farm. Even your custom Cascading Style Sheet (CSS) files, .aspx pages, and master pages will need to be deployed via WSP if they are to be used farm-wide. As a general rule, if the item in question will affect the entire farm it will likely need to be deployed via WSP.

Best practices steps to create a WebPart

When writing your own custom web part, always remember to execute the following steps:

1. Wrap the web part as a *.dll to be deployed to the web application BIN directory to ensure that code access security can be applied.
2 .Create a *.webpart XML file that will specify the above *.dll, namespace, and class for the Web Part and defines properties for it.
3. Create a Feature.xml file that is one of two files used to copy the .webpart XML file to the Web Part gallery of the site collection.
4. Create an Elements.xml file that is one of two files used to copy the .webpart XML file to the Web Part gallery of the site collection.
5. Write a safe control entry for the web application's web.config file that grants permission for your Web Part to run.
6. Set Code access security policies that define what the Web Part will be allowed to do

Once you finish coding your webpart, create a deployment package (*.WSP) before installing/deploying to your farm

Wednesday, July 29, 2009

Free SharePoint tools from leading vendors - DOWNLOAD TODAY!

Download these free SharePoint tools / add-ons from the following leading vendors:
  1. Bamboo Solutions "Mashpoint" - Access external data sources directly from SharePoint, visualize and interact with them via Web Parts or custom applications
  2. Idera SharePoint Performance Montoring Tool - Free tool that enables easy monitoring of critical performance counters for SharePoint, IIS and Windows Operating Systems.
  3. AvePoint FREE Tool for Item-level SharePoint Restores - delivering full fidelity, item-level restore capabilities directly from live SQL and DPM databases and backups.
  4. Quest SharePoint Discovery Wizard - Find out how many Microsoft SharePoint servers, site collections or sites are on your network. Discovery Wizard for SharePoint freeware gathers critical data about your SharePoint inventory and displays the discovered results in two easy-to-read, HTML reports.

Friday, July 24, 2009

How to implement "Bing.com" Type Ahead Search in your MOSS portal?

1. Download the Sharepoint AJAX Toolkit here - http://www.codeplex.com/sharepointajax

2. Develop a web part (VS project) to implement Bing.com Suggest type functionality using AJAX, .NET 3.0 and SharePoint Web services (you probably need the real code here huh! Email me if you need more information :)

3. Use the AutoComplete Extender in the Toolkit above by copying all the code out of the AutoComplete folder and paste into your web part project (as created in Step 2).

4. Compile and through errors and warnings find and add missing references, add more code files from the Toolkit as needed. Many common files were needed. Note that you need to set any .JS files to EmbeddedResources.

5. Use the MOSS 2007 Search API to build a ASP.NET Web Service to return a list of results based on input string value (keyword). Note that you need to host this web service within the same website (same port) as the Sharepoint site itself. Also dont forget to grant CAS trust for the Web Service assembly.

6) Post a comment if you successfully created the Bing.com type ahead search in MOSS, using the above steps

Wednesday, July 15, 2009

Curtain Raises on SharePoint 2010 Features at MS WPC 2009


Finally some public words from Microsoft on its upcoming version of SharePoint 2010 at the 2009 WPC and the Microsoft SharePoint website (http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx). Here are my list of features to get excited about:


1)Introducing VISIO Services
* Create rich LoB data integrated dynamic Visio diagrams that can be viewed and edited via the browser

2) UI
* Ribbon based one/two click UI (can be switched off by power user or admin). And wait your MOSS 2007 sites UI will still look the same with 2010 due to backward compatibility support
* OOB support for cross browsers like FireFox, Apple Safari and "others" :)
* Rich Theming and "Web Edit" feature (edit any web part on any page in place incl. an enhanced WYSIWYG user experience)

3) Media Integration
* Sliverlight WebPart - host videos
* Office 2010 Integrated Media WebParts

4) LoB Integration
* Introducing Business Connectivity Services (BCS) - enhanced BDC that supports Read-Write operations into Line of Business Applications.
* Use SharePoint as a connector to edit (offline edit support) LoB data through Office Apps (like Word, Excel). Watch out from SharePoint Workspace "Groove 2007 on Steroids"

5) Developer & Admin Life "Made easy"
* Intiutive and reorganized Central Admin with a feature boost. Stay tuned for more...
* "Developer Dashboard" exposes debugging information to developers on any page.
* "No Item Limit" Libraries or Lists (the days of 2000 items are so gone)
* A built in "Best Practices Analyzer" for a quick Admin health check
* LINQ Support

6) Need more information??? Visit the SharePoint Conference 2009 in person at Las Vegas - http://www.mssharepointconference.com/Pages/default.aspx

Wednesday, April 15, 2009

Importing custom attributes from Active Directory to MOSS 2007


To do this, first go to your Active Directory Management Console and hopefully you have the Exchange AD Management Plugin installed also (make sure you download this plugin from MS - http://www.microsoft.com/downloads/details.aspx?FamilyID=6be38633-7248-4532-929b-76e9c677e802)

1. Click on the Exchange Advanced Tab
2. Click Custom Attributes
3. Use one of those extensionAttribute values to store your custom information.
4. OK out of AD.

Now goto MOSS Central Admin and do the following:
5. Go to your Shared Services Provider
6. Under User Profiles and My Sites click on User profiles and properties
7. Click on View Profile Properties at the bottom of the page.
8. Add a Custom Property (For e.g. "RCNumber")
9. Select “Do not allow users to edit values for this property”
10. In the Property Import Mapping Section change the Data source field to map: to your corresponding extensionAttribute# (created above) and hit OK.

Do a full user import and your custom attributes should get populated into MOSS

Thursday, April 02, 2009

When i try enabling Windows SharePoint Services Help Search i get an error - SPSearch (administrator)

If you are horrified by the one line error message saying SPSearch (administrator), dont panic. All you have missed is specifying the domain for that user (whom you selected as the administrator). So instead of entering username in the configuration screen as "Administrator" try "\Administrator" (e.g., DEMOS\Administrator)

AS A RULE OF THUMB, WHEN YOU CONFIGURE SEARCH OR ANY SHARED SERVICES IN MOSS AND YOU ARE PROMPTED FOR USERNAME ALWAYS APPEND THE DOMAIN NAME IN FRONT OF THE USERNAME

Wednesday, March 11, 2009

How to check SharePoint version (level of SharePoint you are running)?

1) Goto IIS, select the MOSS website
2) Right click and select Properties
3) Select HTTP Headers tab and you should be able to see a custom HTTP Header called "MicrosoftSharePointTeamServices" with a version number by its side.
4) Compare with table below to see what updates for MOSS your farm has installed:

  • MOSS 20071 or WSS 3.0 Cumulative update (KB956056 & KB956057) 12.0.0.6327
  • MOSS 20071 or WSS 3.0 Infrastructure Update (KB951695 & KB951297) 12.0.0.6318
  • MOSS 20071 or WSS 3.0 post-SP1 hotfix (KB948945) 12.0.0.6303
  • MOSS 20071 or WSS 3.0 post-SP1 hotfix (KB941274) 12.0.0.6301
  • MOSS 20071 or WSS 3.0 post-SP1 hotfix (KB941422) 12.0.0.6300
  • MOSS 20071 or WSS 3.0 SP1 12.0.0.6219
  • MOSS 20071 or WSS 3.0 October public update 12.0.0.6039
  • MOSS 20071 or WSS 3.0 August 24, 2007 hotfix package 12.0.0.6036
  • MOSS 20071 or WSS 3.0 RTM 12.0.0.4518
  • MOSS 20071 or WSS 3.0 Beta 2 TR: 12.0.0.4407
  • MOSS 20071 or WSS 3.0 Beta 2: 12.0.0.4017
  • Office 12 (PDC image - pre-beta): 12.0.0.3111 (This version of Office does not have a support link in the Add/Remove programs dialog box).

Tuesday, November 11, 2008

The Edit in Datasheet View is not available on a List or you cannot see "Connect to Outlook" on a list

The data grid view itself comes from web components provided with Microsoft Office. This can be problematic in organizations with customized installations of Office, as they often don’t include the Windows SharePoint Services Support feature. If you can’t edit a list in grid view, go to Add/Remove Programs, change the Office installation, locate the Office Tools category and select Windows SharePoint Services Support.

Saturday, November 01, 2008

People Search does not return any results

Follow the steps below to address the problem around People Search returning no results (even though you know that there are people in the database that match your search criteria):

1) Open Shared Services Administration
2) Click on Search Settings > Content Sources and crawl schedules > Manage Content Sources
3) Select the "Local Office SharePoint Server sites" content source
4) On the "Edit Content Source" screen, Update the Textbox for "Start Addresses" to include a new entry for the URL of your site collection name starting with "sps3://". For example, "sps3://intranet:80"
5) Select the checkbox "Start full crawl of this content source" and Click "Ok"
6) Wait till the indexing finishes. (You can check the status of indexing by accessing this area - "Shared Services Administration: SharedServices > Search Settings > Configure Search Settings"
7) Goto your site collection (for example http://intranet:80) and perform your people search to find results

Tuesday, October 14, 2008

Tuesday, August 05, 2008

An error occurred during the processing of . The resource object with key 'ResolveBugPageTitle' was not found.

When you use the Bug Tracking Template from the WSS 3.0 Fantastic 40 Templates, you would notice this error when you try to resolve a bug -

An error occurred during the processing of . The resource object with key 'ResolveBugPageTitle' was not found.

This error is caused by missing resource files starting with the filename "tsa.*" which for some reason i noticed were absent from the web directory "C:\Inetpub\wwwroot\wss\VirtualDirectories\{your website port number}\App_GlobalResources" on the web server. Here are the steps to fix this issue:
1) Browse the directory in 12 hive - C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\CONFIG\Resources
2) Copy all the files whose names starts with "tsa.*" and paste these resx files into your website directory "C:\Inetpub\wwwroot\wss\VirtualDirectories\{your website port number}\App_GlobalResources"
3) Browse to the instance of your Bug Tracking site's "bugdefault.aspx" page
4) Click on the small yellow, green buttons and EUREKA! - the Bug resolution page appears and everything functions as expected...

Saturday, July 26, 2008

How to automatically login corporate / internal users to Internet or Extranet website

I have often been faced with this challenge of automatically logging in internal organizational users to intranet accessed via a public URL. For example IE 6.0+ will be able to automatically login a user to the Intranet accesssed via the internal URL (like http://intranet) but the same internal corporate user will be prompted for a username/password when trying to access the same intranet site via the public facing external URL (like http://intranet.xyzinc.com). I solved this issues by merging the following registry entries at each of the user's computer and this can be automated by including the script below as part of the user's logon script to the domain (my example below assumes that your external public facing url is intranet.xyzinc.com for your internal corporate intranet hosted on a web server named MOSS01):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains]@=""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\xyzinc.com]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\xyzinc.com\intranet]"*"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\MOSS01]"*"=dword:00000001

Friday, July 18, 2008

Tips to solve the Error - "No authority could be contacted for authentication"

I have come across this error message "No authority could be contacted for authentication" a couple of times now. Here are the possible fixes i have used:
  1. Make sure that your MOSS server is part of the domain whose users you are trying to authenticate against your portal. If it is and you still get error then remove your MOSS server from your domain and delete the server name in the domain, then add the server into domain again
  2. Check the DNS configuration (Under TCP/IP settings) of your web server and see that it points to your AD DNS (probably your AD server) and not to the ISP DNS (Make sure you are aware of any Firewalls or Filters between your AD server and MOSS server)
  3. Also make sure that your certificate authority (CA) is also your domain controller, you're going to need to find out what IIS is giving out for a cert and then make sure there are no bad DNS entries in there for that.
  4. If above doesnt work, try IE Tools > Settings > User Authentication settings for the Local Intranet zone, check “Automatic logon only in the Intranet zone” is selected. If selected then try resetting to User Authentication to “Prompt for user name and password” and the issue might be resolved.

Saturday, June 28, 2008

Cool MOSS Add-ons & Tools on CodePlex

Some recent releases on CodePlex that i am using in my projects:

Tuesday, June 24, 2008

.NET Framework 3.5 SP1 introduces ADO .NET Entity Designer

ADO .NET Entity Designer -- a tool that permits direct mappings between a database schema and a conceptual schema. This tool permits designers to relate tables from a database schema to Entity Types that the ADO .NET Entity Designer can create and manipulate LINQ may be used to query Entities within the ADO.NET Entity Framework to create code that is easy to maintain, and that works with strongly typed data objects as well as with various types of business entities. For more information, visit the download page. If you have already installed any Visual Studio 2008 Hotfixes, be sure to run the Hotfix Cleanup Utility before installing this beta code.

Friday, April 25, 2008

Free Utility to Tune and Optimize the SharePoint ranking algorithm through a GUI!!

A Microsoft partner call BA-Insight has developed a free utility that gives the SharePoint administrator the ability to tune and optimize the SharePoint ranking algorithm through a graphic user interface. Download the free utility here.

Wednesday, March 26, 2008

Create Business Forms using Microsoft Word and Excel (alternative solution to Microsoft InfoPath)

Microsoft has released some really cool pre-formatted document libraries that can act as an alternative option to Microsoft InfoPath business ready forms. Each library is pre-configured to populate the body of document with library fields automatically. Check it out here and download today

Saturday, February 23, 2008

"Failure decompressing data from a cabinet file" Error while creating saving site as a template

This follows from my previous blog post. This error "Failure decompressing data from a cabinet file" can be avoided by using the stsadm command line tool of MOSS 2007 and using the "nofilecompression" attribute.For example to export a site template, you would use something like this:

  • stsadm.exe -o export -url http://intranet/test -includeusersecurity -nofilecompression -filename C:\backup

Once you finish your export use the stsadm import command with the same nofilecompression attribute. For example:

  • stsadm.exe -o import -url http://intranet/test -includeusersecurity -nofilecompression -filename C:\backup

Wednesday, February 20, 2008

How do i resolve this error "The site is too large to save as a template. The size of a template cannot exceed 10485760 bytes." in MOSS 2007

I get asked quite commonly about increasing the maximum size of List Templates (Saving a list as a template is an easy way of transferring data from one place to another in SharePoint). The quick trick here is as follows :

stsadm -o setproperty -propertyname max-template-document-size -propertyvalue 350000000

Note that:
  • The above increases the maximum size of both site and list templates.
  • The propertyvalue parameter is in bytes, so the example above will increase the maximum size to approx 350MB.
  • Default value is 10 MB or 10485760 bytes
  • There is a hard limit of 500MB so the value must be less than 524288000 or you will get an error when saving the list as a template.

Wednesday, January 23, 2008

Have you heard of Microsoft F# yet?

F# is a functional programming language that runs on Microsoft's Common Language Runtime and the .NET Framework. This means that F# has access to .NET Framework APIs and, conversely, that other .NET languages can use F# libraries. This Fast Guide offers a quick introduction to F# programming best practices and attempts to answer key questions about this new .NET implementation. Click here for more information

Microsoft offers Parallel Programming with .NET 3.5

Late last year, just after Visual Studio 2008 was formally released, Microsoft offered preview software that shows where things may be headed in terms of support for parallelism in future versions of .NET and Visual Studio. Microsoft announced the Parallel Extensions Community Technology Preview (CTP) that runs on the .NET Framework 3.5, thus tapping into features in C# 3.0 and Visual Basic 2008. Parallelism APIs in the new .NET extensions support parallel For and ForEach loops. Declarative data parallelism is supported in the form of a data parallel implementation of LINQ-to-Objects that eases implementation of LINQ queries that run on multiple processors. Meanwhile a new concurrency runtime maps and balances code to available concurrent resources on the execution platform. Pretty cool huh!

Thursday, December 27, 2007

GROUPING SETS - New User defined data types in SQL Server 2008

Other cool features that developers and architects will love are sparse columns, GROUPING SETS, large user-defined data-types (that can exceed the 8000-byte limit), and the new FILESTREAM data type

A new member of the T-SQL Family - the MERGE statement

One revolutionary addition is the new MERGE statement. On par with other core T-SQL CRUD features such as INSERT, SELECT, UPDATE, and DELETE, the MERGE statement is an ISO-2003 compliant command that is primarily intended to handle what many database users refer to as "UPSERT" functionality. For example, say you have an application where you either need to log a new entry for something that hasn't been added to your system, or update it if it's already been added previously. Without the MERGE statement you must either run a SELECT statement to see if a row has already been logged and then UPDATE or INSERT if it's not there. Or you can try to UPDATE first, and then INSERT if the UPDATE doesn't affect any rows. With the MERGE statement you can do this all in one fell swoop. Here's a rather extensive example of the syntax, pulled from the SQL Server November CTP:

MERGE Production.ProductInventory AS pi
USING (SELECT ProductID, SUM(OrderQty) FROM Sales.SalesOrderDetail sod
JOIN Sales.SalesOrderHeader soh
ON sod.SalesOrderID = soh.SalesOrderID
AND soh.OrderDate = GETDATE()
GROUP BY ProductID) AS src (ProductID, OrderQty)
ON (pi.ProductID = src.ProductID)
WHEN MATCHED AND pi.Quantity - src.OrderQty <> 0
THEN UPDATE SET pi.Quantity = pi.Quantity - src.OrderQty
WHEN MATCHED AND pi.Quantity - src.OrderQty = 0
THEN DELETE;

Documentation from a previous CTP's Books Online provides an overview, but the syntax has changed a bit between CTP releases. However, if you study that statement listed above, you can see that it's just a built-in switch (or case) that specifies what to check for, and then what to do if the data is found or not. What's cool about this statement, though, is that you can perform the entire check-in a single operation - which drastically increases performance during large-scale UPSERT operations or when you're trying to merge two large tables.


Table-Valued Parameters
Ever wanted - or more importantly - needed to pass in a table or array of values to your stored procedures? Well, now you can with Table-Valued Parameters. Imagine the following:
CREATE TYPE myTable AS TABLE (
key varchar(6),
value varchar(20)
)
GO

CREATE PROC dbo.InsertKeyValuesFromWebApp
@tvp myTable READONLY,
@owner int
AS
SET NOCOUNT ON

INSERT INTO [dbo].[SomeTable] (key, value, owner)
SELECT key, value, @owner FROM @tvp

RETURN 0
GO

For simpler applications, this functionality might seem like overkill, but for many complex applications, having this code on hand will be a lifesaver. This is something I’ve wanted for years (and which I’ve had to get around by sending in XML fragments as varchar parameters and then re-hydrating on the server) , and now we’ll have native support for it – I can’t wait. I can also see this becoming a wicked bit of functionality when combined with LINQ down the road.

Tuesday, October 30, 2007

Saturday, October 06, 2007

Microsoft Codename "Astoria" CTP toolkit enables developers to create and consume Data Services for the Web

The goal of Microsoft Codename Astoria is to enable applications to expose data as a data service that can be consumed by web clients within corporate networks and across the internet. The data service is reachable over regular HTTP requests, and standard HTTP verbs such as GET, POST, PUT and DELETE are used to perform operations against the service. The payload format for the data exchanged with the service can be controlled by the client and all options are simple, open formats such as plan XML and JSON. The use of web-friendly technologies make it ideal as a data back-end for AJAX-style applications, Rich Interactive Applications and other applications that need to operate against data that is across the web.

Read More & Download....

Team System Web Access (formerly known as TeamPlain) released

Team System Web Access (formerly known as TeamPlain) is a Web interface to Visual Studio 2008 Team Foundation Server. The following features are available in the new release:
  1. NEW: Display custom controls on work item forms
  2. NEW: view queued builds new, queue new builds
  3. Add new work items or edit existing ones
  4. Work with any type of work item, including custom ones
  5. Add new work item queries or edit existing ones
  6. View, download, upload, check-in and check-out documents on SharePoint team portal
  7. View reports, export as PDF or Excel
  8. Browse source control repositories, download files, view changesets, diffs, histories, and annotated views
  9. View build results, start or stop builds
  10. Search for keywords in work items

DOWLOAD this awesome tool from Microsoft website today

Thursday, October 04, 2007

SharePoint Project Management: Better Handling of Multiple Project Sites (3rd Party Tool for MOSS)

http://store.bamboosolutions.com/kb/article.aspx?id=10739

SharePoint 2007 / MOSS 2007 Backup Pros and Cons, Evaluation Standards & Strategies (3rd Party tool for MOSS)

With SharePoint quickly becoming the preferred platform for team collaboration, protecting it against data loss and damages is a key concern for today’s administrators. Can you distinguish various types of data based on its importance? Can you backup critical, frequently changing sites and documents to separate storage tiers? Though improved, the native SharePoint 2007 backup tools still have major issues with recovery granularity, performance, fidelity, and usability. This webinar discusses MOSS 2007 backup Pros and Cons, and recommends new evaluation standards and practices for SharePoint backup.

AvePoint specializes in award winning, enterprise-strength backup solutions for MOSS 2007, WSS 3.0 and Project Server 2007. Today, with 700+ production customers (many of them Fortune 500 companies) and well over 2000 trial customers across 6 continents, AvePoint has become the dominant market leader in SharePoint staging, backup, and disaster recovery solutions.

Wednesday, October 03, 2007

eMail Management and Outlook Integration through nSynergy (3rd party tool for MOSS)

I came across a product from nSynergy that specializes in email and document management using SharePoint 2003/2007. They have developed Drag&DropIt™ to integrate SharePoint and Outlook and finally solve the problem of managing emails within SharePoint. Drag&DropIt™ allows you to easily save emails and email fields into SharePoint document libraries both online and offline. View this demonstration to find out more about dragging and dropping emails into SharePoint and accessing your SharePoint document libraries without ever leaving Outlook


Why is eMail Management so critical?

eMail management has become a high priority for all businesses, both large and small, with most written correspondence being delivered in email form. Businesses can use tools like SharePoint to manage most of their important business documents, but the inability to easily place emails into SharePoint and share those files within a document library is a problem that many SharePoint users have encountered.

You can now use Outlook to drag and drop emails directly into SharePoint document library folders. You can also view, open, create and access documents and emails directly within Outlook. With emails, documents and other files being accessible through Outlook, everyone in your workplace can use Outlook and SharePoint together to create a powerful yet simple document management tool.

The ability to automatically move emails from Outlook into SharePoint and create document library folders from Outlook is a process that will energize your SharePoint 2007 workflows.

nSynergy product that leverages the familiarity of the Outlook interface and the powerful searching features of SharePoint is needed. Metadata from emails such as Date Received, Date Sent, From and other fields are transferred automatically into a document library’s columns by simply dragging and dropping emails into Outlook folders. This makes it easier to filter and search for these emails and utilize the power of the SharePoint document library views.

Monday, October 01, 2007

How to index PDFs in MOSS 2007 document libraries

SharePoint document libraries are phenomenal tools for collaborative environments where files are shared. And SharePoint's ability to search files in document libraries makes finding files easy. Well, unless the document is a non-Microsoft file type, such as the ever-present PDF file.


The sad fact of the matter is that Windows SharePoint Services (WSS) 3.0 and Microsoft Office SharePoint Server (MOSS) 2007 can't index PDFs by default. That's not news to many veteran SharePoint professionals. Nor is the fact that you can add an icon for PDFs, reindex existing documents, and so forth. However, many administrators are new to SharePoint, and will hit their heads hard against this problem. I was disappointed to see that, despite extensive searching on Google, I could find no single, authoritative, and (most importantly) complete guide for how to do so.

The "bottom line" is that you must install an iFilter for PDFs on your SharePoint servers--specifically, any server that performs search, which would be all WSS servers and your MOSS search server. iFilters are plug-ins that enable indexing of file types. Although iFilter is a Microsoft specification, it is generally through vendors or third parties that you'll get iFilters--not through Microsoft itself.

After you add the iFilter, you must configure SharePoint to index the file type (.PDF). But then, you still have two problems. The biggest is that SharePoint will index only files that are added or existing files whose properties change. So SharePoint will not index existing PDFs when you add the PDF iFilter. You must rebuild your index. The second challenge, purely a cosmetic one, is that you enable SharePoint to display an appropriate icon for PDFs.

This installment will focus on 32-bit WSS servers. Both of these documents contain the word "iFilter" in them, but a search produces only the Word document. Now, let's fix the problem!

1. You will need two downloads: The Adobe PDF iFilter version 6.0, available from Adobe click here
An icon for PDFs, also available from Adobe. Check their licensing page then download the gif


2. Install the iFilter. Note: Many guides on the Internet suggest shutting down Microsoft IIS or the Shared Service Provider (SSP) or the WSS application(s). I found this was not necessary, and Microsoft's own KB article 927675 did not specify it was necessary.


3. Add a registry entry for the .pdf extension in the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Search\Applications\\Gather\Search\Extensions\ExtensionList. (Open the registry editor. Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Search\Applications\\Gather\Search\Extensions\ExtensionList\. Identify the highest "number" value in the key. On a default installation of WSS, the highest entry is 37. Note they are not sorted in numeric order because registry value names are strings. Create a registry value for the next number, e.g. 38, by choosing Edit à New à String Value then naming the value the next highest number (e.g. 38). Double-click the value you just created and, in the Value Data box, type: pdf. Note there is no dot preceding the extension.


4. There are two registry keys with specific values that must exist. Verify that these exist and, if not, create them: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf - Value Name: Default; Type: REG_MULTI_SZ; Data: {4C904448-74A9-11D0-AF6E-00C04FD8DC02})
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Search\Setup\Filters\.pdf (Value Name: Default; Type: REG_SZ; Data: (value not set) - Value Name: Extension; Type: REG_SZ; Data: pdf
- Value Name: FileTypeBucket; Type: REG_DWORD; Data: 0x00000001 (1)
- Value Name: MimeTypes; Type: REG_SZ; Data: application/pdf


5. Restart the Windows SharePoint Services Search service. Open a command prompt. Type net stop spsearch, then net start spsearch. Perform a search, and existing PDFs will not be returned. But newly added PDFs will (once indexed by SharePoint) appear in search results. If you modify any property of an existing PDF, it will be indexed. But who wants to modify all existing PDFs in a document library? This is where I found a lot of misinformation online. Even Microsoft's KB 927675 didn't suggest the right solution! It's easy! STSADM, SharePoint's ubercommand, to the rescue!


6. Rebuild the WSS search index.- Open a command prompt.- Navigate to Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN and type the following commands
stsadm.exe -o spsearch -action fullcrawlstop
stsadm.exe -o spsearch -action fullcrawlstart
The existing PDFs will, after being indexed, appear in search results. But they will still not have correct icons. So, while your site is being indexed, keep going with these steps to configure the icon.


7. Open the folder Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Images.


8. Copy the gif you downloaded in Step 1 into the folder.


9. Open the folder Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\Xml.


10. Right-click the file docicon.xml and choose Open With and select Notepad.


11. In the element, you'll see a number of elements. You will add one for pdf. It does not have to be in alphabetical order. The element you need to add is:


12. Save that file and close Notepad.Now, the moment of truth. A search now provides the results.

Microsoft is finally using Microsoft Team Foundation Server internally

Microsoft is finally using Microsoft Team Foundation Server 2008 Beta 2 internally. Click here to get some great statistics

Rich Internet application job trends and salaries

This is a good reference for all you interactive developers to know what you are worth in the marketplace

How to generate RSA public and private keys as well as export to XML

The following method shows how RSA keys can be saved to disk as an XML file. The XML files can then be used to make an RSA secure channel -- the public key is used for encryption and the private one for decryption.

///
/// Generates 2 XML files (public and private key)
///

/// RSA private key file path
/// RSA private key file path
/// secure size must be above 512
public static void GenerateRsa(string privateKeyPath, string publicKeyPath, int size)
{
//stream to save the keys
FileStream fs = null;
StreamWriter sw = null;
//create RSA provider
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(size);
try
{
//save private key
fs = new FileStream(privateKeyPath, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs);
sw.Write(rsa.ToXmlString(true));
sw.Flush();
}
finally
{
if (sw != null) sw.Close();
if (fs != null) fs.Close();
}
try
{
//save public key
fs = new FileStream(publicKeyPath, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs);
sw.Write(rsa.ToXmlString(false));
sw.Flush();
}
finally
{
if (sw != null) sw.Close();
if (fs != null) fs.Close();
}
rsa.Clear();
}

Friday, August 24, 2007

Awesome article on Unit Testing

Visual Studio Team Foundation Server Web Access Power Tool

Team System Web Access (formerly known as TeamPlain) is a Web interface to Visual Studio 2005 Team Foundation Server. Download this awesome power tool now

Tuesday, July 24, 2007

My TOP 10 Coolest Visual Studio 2008 Features

Visual Studio 2008, due for release at the end of 2007, promises numerous improvements for Visual Basic, a data query called the Language Integrated Query (LINQ), a new Entity Framework for ADO.NET and updated tools for ASP.NET AJAX and Office 2007 development.
My top ten Visual Studio's IDE features are as follows:


1) Multi-targeting

Visual Studio 2008 is billed as the design surface for the .NET Framework 3.5, which itself is the merger of the .NET 3.0 toolset introduced earlier this year with updated versions of ASP.NET, ADO.NET, Visual Basic, C# and the CLR. At the same time, though, Orcas allows developers to work backwards and develop specifically for .NET 2.0 or 3.0. Once a framework version has been selected, Visual Studio 2008 will enable the reference features that are appropriate for that version of the framework. (In other words, don't try using LINQ in a .NET 2.0 application.)


2) N-tier application development

An n-tier application is spread among any number of different systems, typically a service layer, an access layer and a business logic layer. With such a model, it is easy to share validation logic between entities. Unfortunately, developing such applications in Visual Studio 2005 is pretty much impossible because a dataset and the code that connects it to a database are in the same file. The change in Visual Studio 2008 is subtle but important, as the table and the dataset now reside in different layers.


3) An improved designer

Visual Studio 2005 designer is a little more of the Internet Explorer renderer turned into an editor. To improve upon this, the Visual Studio group turned to Expression, the Microsoft product suite for Web designers. The new designer allows developers to apply styles in line, with an existing class, with a new class or with Internet Explorer. In addition, changes such as margins and paddings around images can be applied to rules and not just individually. This also makes for cleaner CSS files.Finally, the designer offers a split view, so developers can look at source code and design simultaneously. This is a response to the growing trend of development using two monitors.


4) ASP.NET AJAX and VSTO for Office 2007

Right now, developers aiming to build cutting edge Web applications have to download the ASP.NET AJAX framework, and those who want to develop for Office 2007 have to download Visual Studio 2005 Tools for Office Second Edition. Both ASP.NET AJAX and VSTO 2005 SE will be directly incorporated into Visual Studio 2008. VSTO will come with a new runtime, which will run both Office 2007 and Office 2003 add-ins, while ASP.NET AJAX will come with a variety of JavaScript tools, such as IntelliSense and robust debugging.


5) The ADO.NET Entity Framework

The biggest changes to ADO.NET revolve around its Entity Framework, which, unfortunately, is now slated to be released quite a while after Visual Studio 2008. This framework consists of a conceptual layer, which fits between an application's logical database layer and its object layer, and the Entity Data Model. Run the Entity Data Model Wizard in Visual Studio 2008 and the output is three files - a conceptual model that talks to object classes, a logical model that the relational database talks to, and map between the conceptual and logical models. Within the conceptual layer, one finds entity types bundled into sets, associations that define the relationship between entities, and sets of associations. The information in this layer will handle the back and forth with SQL Server without touching data access code. Once entities have been created, developers can use the either CreateQuery or new LINQ to Entities query to retrieve entity objects, data records or anonymous types.


6) LINQ: The Language Integrated Query

In Visual Studio 2005, querying a dataset typically involves a stored procedure, a newly created view and a bit of ADO.NET filtering. This is the case because data exists in rows, while .NET code deals with objects. They are always two different worlds and LINQ puts queries inside the languages and merges the worlds together.
At its most basic level, the Language Integrated Query, a feature of both Visual Basic and C#, uses the concept of the SQL Select statement to make its queries. However, there are two important differences:
(a) Firstly LINQ statements begin with a From statement instead of the Select statement. By listing the data source first, IntelliSense is triggered.
(b) Secondly, since C# is an object-oriented languages, whatever you can express in C# you can make part of LINQ queries. This encompasses anything that is IEnumerable - entities, collections and even XML. Moreover, since the queries are being made in an object-oriented environment, you can do very complex things that result in a completely different result set, such as calling up an instance of objects that did not exist in the source at all.
LINQ also brings about the introduction of several new language concepts for Visual Basic and C#. The expression tree, for example, is a data representation of the LINQ expression that bridges the gap between the .NET code and the SQL Server. In addition, property initialization makes it possible to create an object and set its properties in a single line of code.
Other new language concepts, which will be discussed below, include implicit types and extension methods.


7) Implicit types

Implicit types provide strong typing without forcing developers to figure out the type they need. The compiler does the work for them, since the type is inferred from the initializer expression. Implicit types work well when looping through a collection, since in such a scenario a developer is likely to be looking only for a key and a value and will not know, or care, what is the index type. In addition, inferring types makes it possible for extensions to bind to data types such as XML. This is fundamental to making LINQ work.


8) Extension Methods

Extension methods is a feature coming straight from LINQ, since all LINQ query operators are extension methods. These methods are marked with custom attributes and are then added to other objects automatically (so long as they are not already there). Extension methods can be used just about anywhere a developer would use a normal function. However, they cannot contain optional parameters, parameter arrays or generic arguments that have not been typed. Also, late binding cannot be done with extension methods.


9) IntelliSense

IntelliSense, already referred to as "Intellicrack" in some development circles, is set to encompass keywords, member variables and anything in scope. Moreover, IntelliSense will work with implicit types, once the compiler has figured out what is the type. In addition, LINQ is set up to take advantage of IntelliSense. In SQL syntax, the Select query comes first, but in LINQ, the From statement comes first. With the data source listed first, IntelliSense has a chance to kick in. Visual Studio 2008 has also added JavaScript IntelliSense to accommodate ASP.NET AJAX development.


10) Relaxed delegates, initializers and more

Check this MSDN article to learn more on relaxed delegates and initializers. The emphasis there is on productivity gains developers can expect to enjoy when building data-oriented applications with an increasingly dynamic language.

What is .NET 3.0?

A lot of people have asked me about what .NET 3.0 is and the features it ships. Here is my quick summary. .NET 3.0, formerly known as WinFX, is the latest version of Microsoft's .NET Framework, which represents both the company's business strategy and its collection of programming support for Web services. .NET 3.0 was released at the same time as Vista, Microsoft's update to its Windows operating system.

.NET 3.0 consists of four news tools. The Windows Communication Foundation lets developers build unified Web services and other distributed systems that can talk to each other. The Windows Presentation Foundation is a development tool for Web applications and rich client applications. The Windows Workflow Foundation is a programming model for building workflow-enabled applications in Windows. Finally, Windows CardSpace is an identity management component.

In addition to those four new tools, .NET 3.0 also includes several key existing pieces of .NET 2.0, such as ADO.NET 2.0, ASP.NET 2.0, Windows Forms 2.0 and the Common Language Runtime, or CLR 2.0. Microsoft's Expression suite, Windows File System and Visual Studio 2005 development suite are also compatible with .NET 3.0.

Wednesday, July 18, 2007

My TOP 18 Coolest Visual Studio Add-Ons

1) Microsoft Interop Forms Toolkit 2.0 - http://www.microsoft.com/downloads/details.aspx?FamilyID=934de3c5-dc85-4065-9327-96801e57b81d&DisplayLang=en "This toolkit helps you bring the power of .NET to your existing VB6 applications, by allowing them to display .NET Forms and Controls from within the same application. Instead of upgrading the entire code base, these applications can now be extended one form at a time. The goal is a phased upgrade, with production releases at the end of each iteration containing both VB6 and VB.NET forms running in the same VB6 .exe process."

2) Application Verifier - http://www.microsoft.com/downloads/details.aspx?FamilyID=d2dd7ee0-aaa2-402a-821d-43795d6cf139&DisplayLang=en "Application Verifier is a runtime verification tool for unmanaged code that assists in finding subtle programming errors that can be difficult to identify with normal application testing. Run the Application Verifier tests on your code to identify issues within heaps, handles, and locks."

3) ILMerge - http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&DisplayLang=en "ILMerge is a utility for merging multiple .NET assemblies into a single .NET assembly. It works on executables and DLLs alike and comes with several options for controlling the processing and format of the output."

4) XML Notepad 2007 - http://www.microsoft.com/downloads/details.aspx?FamilyID=72d6aa49-787d-4118-ba5f-4f30fe913628&DisplayLang=en "XML Notepad 2007 provides a simple intuitive user interface for browsing and editing XML documents."

5) Internet Explorer Developer Toolbar - http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&DisplayLang=en "The Microsoft Internet Explorer Developer Toolbar provides a variety of tools for quickly creating, understanding, and troubleshooting Web pages."

6) Team Foundation Power Tool - http://www.microsoft.com/downloads/details.aspx?FamilyID=7324c3db-658d-441b-8522-689c557d0a79&DisplayLang=en "The Microsoft Visual Studio 2005 Team Foundation Server Power Tool (formerly known as Power Toys) is a set of enhancements, tools and command line utilities that improve the Team Foundation Server experience."

7) ASP.NET AJAX 1.0 - http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&DisplayLang=en "ASP.NET AJAX is a set of technologies to add AJAX (Asynchronous JavaScript And XML) support to ASP.NET. It consists of a client-side script framework, server controls, and more."

8) Enterprise Library 3.0 - http://www.microsoft.com/downloads/details.aspx?FamilyID=62ef5f79-daf2-43af-9897-d926f03b9e60&DisplayLang=en "This release of Enterprise Library includes: Caching Application Block, Cryptography Application Block, Data Access Application Block, Exception Handling Application Block, Logging Application Block, Policy Injection Application Block, Security Application Block and Validation Application Block."

9) Windows PowerShell 1.0 - http://www.microsoft.com/downloads/details.aspx?FamilyID=6ccb7e0d-8f1d-4b97-a397-47bcc8ba3806&DisplayLang=en "Microsoft Windows PowerShell is a new command-line shell and scripting language designed for system administration and automation. Built on the .NET Framework, Windows PowerShell enables IT professionals and developers control and automate the administration of Windows and applications."

10) Microsoft ASP.NET Futures - http://www.microsoft.com/downloads/details.aspx?FamilyID=9323777e-fe78-430c-ad92-d5be5b5ead98&DisplayLang=en "The Microsoft ASP.NET Futures May 2007 release contains an early developer preview of features providing a wide range of new functionality for both ASP.NET and Silverlight."

11) Reflector for .NET - http://www.aisto.com/roeder/dotnet/ "Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."

12) GhostDoc - http://www.roland-weigelt.de/ghostdoc/ "GhostDoc is a free add-in for Visual Studio that automatically generates XML documentation comments for C#. Either by using existing documentation inherited from base classes or implemented interfaces, or by deducing comments from name and type of e.g. methods, properties or parameters."

13) DPack - http://www.usysware.com/dpack/ "DPack is designed to greatly increase developer's productivity, automate repetitive processes and expand upon some of the Microsoft Visual Studio features. DPack includes various browser tools that allow the developer to quickly narrow the search down to a particular class, method or assembly type. DPack includes greatly enhanced numbered bookmarks feature, various code navigation tools as well as streamlined surround with feature, and much more."

14) CodeKeep - http://www.codekeep.net/addins.aspx "With the CodeKeep add-in, you can manage your code snippets and search for other code snippets without ever having to leave Visual Studio."

15) AnkhSVN - http://ankhsvn.tigris.org/ "AnkhSVN is an open-source Visual Studio .NET addin for the Subversion version control system. It allows you to perform the most common version control operations directly from inside the VS.NET IDE. Not all the functionality provided by SVN is (yet) supported, but the majority of operations that support the daily workflow are implemented."

16) VSCmdShell - http://visualstudiohacks.com/vscmdshell "The VSCmdShell powertoy combines the command window and the command prompt and makes them available in a single window. Just about anything you can do in the command prompt you can now do right inside of the IDE. You can also execute Visual Studio commands in the same window by simply prefacing that command with an exclamation point, you will even get IntelliSense for the command list. "

17) Regionerate - http://www.rauchy.net/regionerate/ "Regionerate is an open-source tool for developers and team leaders that allows you to automatically apply layout rules on C# code. Regionerate runs on Visual Studio 2005, Visual Studio Codename Orcas Beta 1, #develop 2.0, NAnt and on command line."

18) Consolas Font Pack for VS 2005 - http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en "The Microsoft Consolas Font Family is a set of highly legible fonts designed for ClearType. It is intended for use in programming environments and other circumstances where a monospaced font is specified. This installation package will set the default font for Visual Studio to Consolas."

Tuesday, July 17, 2007

Can i manage Digital Assets (like media, artworks, logos etc) using MOSS 2007?

MOSS 2007 offers a rich platform to manage your digital assets. Microsoft's collaborative media management solution, named "Microsoft Interactive Media Manager", extends Microsoft Office SharePoint® Server 2007 for media and entertainment companies. The solution builds on existing technology investments, and helps companies create an end-to-end content production system accessible by everyone. In addition, Interactive Media Manager easily integrates with Microsoft business intelligence tools, giving management insight into production details. Check this article out from Microsoft to find out more

Friday, July 13, 2007

Sunday, July 01, 2007

Enterprise Single Sign On with MOSS 2007

Microsoft Office SharePoint Server enables enterprises to develop an intelligent portal that seamlessly connects users, teams, and knowledge so that people can take advantage of relevant information across business processes to help them work more efficiently. Microsoft Windows SharePoint Services v3 and MOSS 2007 have become very popular in recent years and have helped many businesses create an infrastructure for sharing and collaborating internal information. Read this article to find out more about how SharePoint SSO can be deployed across your enterprise.

Wednesday, June 20, 2007

Microsoft releases Acropolis for .NET Developers

Microsoft has released a set of components and other tools for the development of client applications in the .NET Framework. The product, code-named Acropolis, was announced at Tech Ed 2007 and is available as a CTP, or community technical preview, from the new WindowsClient.NET page.

Acropolis is part of the '.NET Client Futures' wave of releases, Microsoft's preview of upcoming technologies for Windows client development. With Acropolis, developers can create a set of modules and build them into a business application. These modules can be hosted within the Microsoft Office 2007 suite or as stand-alone applications. Built-in themes are available, but customization using XAML is also possible.

The product caters primarily to Windows Presentation Foundation development. Check this awesome blog on some common Acropolis questions. Acropolis CTP seems like a very finished product even in this preview. It integrates nicely into the Visual Studio "Orcas" preview. There are some really cool controls to explore in the toolbox. These controls include single and multipart navigation managers, components for providing, updating and publishing data, and several UI controls.

Agile Development Methodologies

Agile software development is picking up steam. You have most likely heard about eXtreme Programming (XP). What other Agile methodologies are you familiar with and what do they bring of interest or significance to the table of agility? More important, why should you learn about these different methodologies instead of simply focusing on one?

No one shoe fits all. Any methodology that requires you to follow it in totality and not let you adapt is rather dogmatic, not pragmatic. To be effective we have to take the best of different approaches and apply to our projects based on our specific needs.

Click here to listen to an awesome Podcast on Agile Development methodologies

Sliverlight Learning Guide

Silverlight is Microsoft's framework for building cross-browser and cross-platform rich Internet applications with streaming video, rich text, Ajax functionality and the like. Silverlight 1.1 Alpha also includes a slimmed-down version of the .NET Framework Common Language Runtime and supports Microsoft's new Dynamic Language Runtime. This means developers can build Web applications in familiar languages like Visual Basic and C# and in dynamic languages like IronPython and IronRuby.

Five Windows Vista security tips .NET developers should know

A must read if you are writing applications for Windows Vista

Tuesday, June 19, 2007

I've linked a SharePoint list to Microsoft Office Outlook 2007 but I don't see any updates when I view the list in Outlook

With both Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007, the ability to link SharePoint lists and document libraries to Outlook 2007 is a fantastic feature. It lets you take this information offline and synchronize it back to SharePoint at a later time. If you move or delete the linked list or document Library in SharePoint (which is likely what happened in your case), the link in Outlook 2007 isn't automatically updated; you'll need to update it manually. To do so, you need to delete the link in Outlook, then reattach it if so desired. To delete a link to a SharePoint list or document library in Outlook, locate it in the left vertical folder structure, right-click to open the context menu, and click Delete.