Friday, November 26, 2010

MOSS 2007 upgrade to SharePoint 2010

Requirements, requirements & REQUIREMENTS - gathering, understanding, refinement, gathering, understanding, refinement, gathering ....


We need to understand the business and customers'/users' requirements first.  The requirements can be broken into existing SharePoint 2007 usage scenarios and new usage scenarios. Since SharePoint 2010 enables lots of cool new features, we should educate our users on the new features and understand which ones appeals to them.

Once we understand the requirements, we can then map them into the services that is needed to fulfill those requirements. It is good to have some knowledge on the those services especially in terms of hardware requirements to run them properly. We need to truly understand what services are needed and how intensive they will be used. If what we have collected from users cannot answer these two important questions, then we need to go back to users. This is a very important activity as it will help us to get the right hardware to build our SharePoint 2010 environment.

Sunday, November 21, 2010

SharePoint 2010 Services & its Hardware Requirements

When planning to setup SharePoint 2010 environment, we need to understand what are the services that will be required and how heavy each of them will be used. This will help us them to understand the hardware requirement and design the right size of hardware for our SharePoint 2010 environment to ensure optimum performance.


Below are some of the services that is either processing, memory, storage size or  storage speed (IOPS) intensive and any combination of them We need to be extra careful during planning if these services is needed and will be heavily used in our organization. This analysis is based on technet article on capacity management.

1. SharePoint Search Service. This is the king of all services in terms of resource (processor, memory, storage space & speed) utilization across all the 3 tiers - web, application & sql servers. I guess because on this nature, MS recommends that for large farms, we use separate search service farm to host search applications. Note that search service is one of the cross farm service enabled services.

2. User Profile Service and PowerPivot Service. Both services requires lots of resoures in the application and sql servers.

3. Office related services such as PowerPoint, Excel Calculation, Visio, Access, Word Conversion and InfoPath Form services utilizes high application server CPU & RAM.

4. Database operation intensive services such as Logging, Web Analytics and Project service applications requires high end SQL Servers. In most cases, this requires separate SQL Servers to cater for these services applications.

Saturday, November 20, 2010

Hardware and Software Requirements for SharePoint 2010

SharePoint in a multiple server farm production environment needs the below minimum hardware specifications

1. 64 bit processors, 4 core servers

2. 8GB of RAM

3. Around 120 GB for system drive (80GB + 30% buffer for daily use +2*RAM size) - this is just my estimation. Varies for each farm/environment.

For its back end (SQL Server), it needs

1. 64 bit, 8 cores

2. 16 GB to 64 GB of RAM (medium to large farm)

3. 80 GB ++ for system drive. ++ means additional space required depends on size of SharePoint content.

SharePoint 2010 needs the following software to work.

A. SQL Server

1. SQL Server 2005 64 bit with Service Pack 3 (SP3) + Cumulative Update Package 3 (CUP3) or

SQL Server 2008 64 bit with SP1 + CUP2.

B. SP Server

1. Windows Server 2008 with SP2

2. Windows PowerShell 2.0 CTP3

3. MS .NET Framework (FW) v3.5 with SP1

4. MS Chart Controls for MS .NET FW 3.5.

Microsoft Chart Controls for .NET Framework provides rich data visualization for developers. Using the Chart controls, you can create ASP.NET pages or Windows Forms applications with simple, intuitive, and visually compelling charts for complex statistical or financial analysis. These controls are specifically designed for use with Microsoft Visual Studio 2008.

5. MS Geneva FW . More details here. Basically this enables claims based authorization.

6. MS Sync FW Runtime v1.0(x64). More details here.

Microsoft Sync Framework is a comprehensive synchronization platform that enables collaboration and offline scenarios for applications, services and devices. Developers can build sync ecosystems that integrate any application, any type of data, using any protocol over any network.

7. MS Filter Pack 2.0.

The Microsoft Filter Pack is a single point-of-distribution for Office IFilters. IFilters are components that allow search services to index content of specific file types, letting you search for content in those files. They are intended for use with Microsoft Search Services (Sharepoint, SQL, Exchange, Windows Search).

8. MS SQL Server Analysis Services (SSAS) ADOMD.NET.

ADOMD.NET is a Microsoft .NET Framework data provider that is designed to communicate with Microsoft SQL Server 2005 Analysis Services (SSAS). More details here.

9. ADO.NET Data Services v1.5 CTP2.

WCF Data Services (formerly ADO.NET Data Services) is a platform for what Microsoft calls Data Services. It is actually a combination of the runtime and a web service through which the services are exposed. More details here.

Tuesday, August 17, 2010

Visual Basic script to manipulate an element in DOCICON.XML file

'Purpose: To add/update/remove the element
'into DOCICON.XML file make the installation/uninstallation of Foxit PDF iFilter complete

blnRevert = false
strAction = ""

'*** Arguments Section ***

If wscript.arguments.count = 1 Then
if lcase(wscript.arguments(0)) = "-update" OR lcase(wscript.arguments(0)) = "/update" Then
strAction = "update"
elseif lcase(wscript.arguments(0)) = "-remove" OR lcase(wscript.arguments(0)) = "/remove" Then
strAction = "remove"
else
call OutPutUsage
wscript.quit
end if
else
call OutPutUsage
wscript.quit
end if

strFileName = "C:\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\Xml\DOCICON.XML"

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
blnFileExists = objXMLDoc.load(strFileName)

if blnFileExists = 0 then
OutPut strFileName + " file not found."
OutPut "Script will terminate"
wscript.quit
end if

Dim objCurrNode, objNewNode, objNewText, xmlTmpNode
Set objCurrNode = objxmlDoc.selectSingleNode("/DocIcons/ByExtension")

Dim i, blnElementExist
i = 0
blnElementExist = 0

for each xmlTmpNode in objCurrNode.ChildNodes
' OutPut xmlTmpNode.xml
strAttValue = xmlTmpNode.getAttribute("Key")

if lcase(strAttValue) = "pdf" then
blnElementExist = 1
exit for
else i = i + 1
end if
next

if strAction = "remove" then

if blnElementExist = 0 then
OutPut "Key Not found. No changes will be made."
else
objCurrNode.removeChild objCurrNode.ChildNodes(i)
objXMLDoc.save(strFileName)
OutPut "Key=PDF has been removed."
end if

else
if blnElementExist = 1 then

strAttValue = ""
strAttValue = xmlTmpNode.getAttribute("Value")

if lcase(strAttValue) "icpdf.gif" then
Set objNewNode = objxmlDoc.createNode(1,"Mapping","")
objNewNode.setAttribute "Key","pdf"
objNewNode.setAttribute "Value","icpdf.gif"
objCurrNode.replaceChild objNewNode, objCurrNode.ChildNodes(i)
Set objCurrNode = objCurrNode.lastChild
objXMLDoc.save(strFileName)
OutPut "Value for Key=pdf updated to icpdf.gif"
else OutPut "Key with correct value already exists. No changes will be made"
end if

else
Set objNewNode = objxmlDoc.createNode(1,"Mapping","")
objNewNode.setAttribute "Key","pdf"
objNewNode.setAttribute "Value","icpdf.gif"
objCurrNode.appendChild(objNewNode)
Set objCurrNode = objCurrNode.lastChild
objXMLDoc.save(strFileName)
OutPut "New element created: "
end if
end if

'OutPut objXMLDoc.xml

SUB OutPutUsage
OutPut ""
OutPut " " & wscript.scriptname & " is used to update or remove into DOCICON.XML"
OutPut ""
OutPut " Usage:"
OutPut ""
Output " " & wscript.scriptname & " [-update | -remove]"
OutPut ""

END SUB

SUB OutPut(strStringToOutPut)
wscript.echo strStringToOutPut
END SUB

So, in your bat file you do this:-
cscript.exe //nologo MOSS_DOCICON_Setting.vbs /update
or
cscript.exe //nologo MOSS_DOCICON_Setting.vbs /remove

Friday, August 6, 2010

Visual basic script to check the status of a MOSS 2007 solution

A simple VB script that I wrote about 2 years back to automate solution deployment.

dim strSolutions , intReturnValue
strSolutions = "There are no items matching the criteria specified."
intReturnValue = 2 'solution not installed

Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN\stsadm -o enumsolutions")

strSolutions = objScriptExec.StdOut.ReadAll
strSolutions = Trim(strSolutions)

pos=InStr(1,strSolutions,"There are no items",1)
if pos = 0 then

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.loadXML(strSolutions)

Dim objCurrNode, strDeployStatus
Set objCurrNode = objxmlDoc.selectSingleNode("/Solutions")

for each xmlTmpNode in objCurrNode.ChildNodes
strAttValue = xmlTmpNode.getAttribute("Name")
if lcase(strAttValue) = "" then
set ElementsList= xmlTmpNode.getElementsByTagName("Deployed")
for each Elem In ElementsList
strDeployStatus = Elem.firstChild.nodeValue
if LCase(Trim(strDeployStatus)) = "true" then
intReturnValue = 4 'solution installed & deployed
else
intReturnValue = 3 'solution installed BUT NOT deployed
end if
next
exit for
end if
next
end if

Wscript.Quit(intReturnValue)

Wednesday, August 4, 2010

Multilingual Support in SharePoint

I was searching for articles to learn how to enable multilingual support in SharePoint and would recommend these two articles (links below) for anyone else interested to do the same.

Basically there are 2 ways to do it depending on what you want to achieve.

First one is to use a feature called Variation. It looks quite straight forward to implement but there is few limitations to it including that it is limited to publishing site template. Read more here: MOSS_multilingual_variation.

The second way is by a feature called Localization which leverages on the resource files. Read more here: Localization of SharePoint Project

Friday, July 9, 2010

SharePoint 2007 Search Issues Troubleshooting

Are you having any search related issues? Try the troubleshooting steps below and see if it helps you to identify the cause.

1. Check if search services are running.

If not --> restart it by going to Central Admin -> Operations -> Services on Server

2. Check if content db is assigned to a index server.

If not --> Application Management > Content Databases > Select the content database

3. If search is running and content db is assigned correctly but you can see any results, then check if indexing/crawling is still running. if yes, you have to wait till it completed before doing your search again.

4. If still cannot search, then try running FULL index again. You may need to delete existing index files and run full index again either by

i) using UI - SSP Search config

ii) using stsadm commands

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm –o spsearch –action fullcrawlstop

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm –o spsearch –action fullcrawlstart

5. You should also check if the file file ext is included in files to be indexed (in SSP Search config). Note that not all files are indexable or included in indexing.

6. Additionally, check the search visibility under Site Actions > Site Settings > Search visibility to check whether that particular site and its contents are included in crawling

7. It can be a crawler access issue. If yes, Reset the rights of the crawler account to the content database thru SQL Enterprise Mgr/Mmgt Studio and/or check the check web application policy whereby the crawl account must have "Full Read" access.