Some links to capacity planning tools and advice #in #SP2010 #PS2010 #ProjectServer #SharePoint #MSProject
Capacity management and sizing for SharePoint & Project Server 2010
Software Boundaries and Limitations for SharePoint & Project Server 2010:
Storage and SQL Server capacity planning and configuration (SharePoint & Project Server 2010):
Further Resources & Links – SharePoint 2010:
Further Resources & Links – Project Server 2010:
Tihomir Ignatov Blog
Custom Excel spread sheet for sizing High Availability environments:
Choirul Amri Blog
Further storage considerations:
Something I always forget and scramble around to find:
<xsl:template name="Debug" match="Row[@Style=’Debug’]" mode="itemstyle">
Property Name: <xsl:value-of select="name()"/>
Value: <xsl:value-of select="." /> <br/>
Original blog post is here:
I will be posting more stuff on the blog soon. Things are a bit manic at the moment
As per my previous post, in my current project we are starting to migrate the whole solution to live.
The project I am working on is a global solution with locations in UK, USA, India, China + others. As a result of this, like many global projects, we suffer from the available connections.
To do this, I have used the Yahoo compressor which is a java applet where you can pass in the file and output the minimised version.
Download Link: http://yuilibrary.com/downloads/#yuicompressor
How To Documentation: http://developer.yahoo.com/yui/compressor/#using
Example Command Line: java -jar yuicompressor-2.4.6.jar –nomunge –preserve-semi –disable-optimizations <input file> -o <output file>
So it has been a while since I have posted anything on the blog.
As I am sure many of you can relate, there comes a time in all projects when you have to concentrate solely on them to ensure that all factors play out as expected. One of those times would be go live time.
The project I have been working on for the last year is about to go into trial with its first division, so it has been heads down to ensure that all bug fixes and business intelligence data is correct.
As of today, we are officially at a code freeze and we are clearing down the databases to rid them of test data ready for migration to the Production environment and the final integration testing process.
As a result, we can commence blogging again, of which I have a few topics stored up.
First up is…
Project Scenario: I created a generic function to contact the User Profile service and set some default global variables when the page loads for the current logged in user.
So the basic mechanism was there already.
- I was passing the current user as a variable
- User Profile Service was already being queried
- Set the global variables for the current user
I wanted to extend this to take any user, but not upset the other functions that relied on the global variables I was setting in the function.
So essentially I added a setGlobal flag parameter and provided a default to the function so that existing code could work (surrounded by the newly created flag of course) and then implemented what I needed to.
This allowed my existing code to continue to function without issue, but also allowed me to reuse my User Profile functionalities for another purpose.
The original idea came from the following blog post:
In my code, I implemented the first method. In future however I shall certainly use the second approach.
So, it’s the weekend and I have decided to build myself a SharePoint 2010 / Project Server 2010 development environment so I can play with some ideas at home as well as update my CodePlex projects.
Now in MOSS 2007 you used to be able to create a server farm connecting to a full SQL Server on the same box by not choosing Standalone mode during the setup.
In SharePoint 2010, it would appear that this is not the case using the GUI setup or even stsadm as it will not accept local accounts during the setup wizard
However in PowerShell you can.
The following articles have been useful during my setup process:
Blog: From The Field – http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=112
As a basic overview (and as a reminder to myself):
- Install the pre-requisites
- Install the binaries
- Run the SharePoint 2010 Management Shall as the Server Administrator
- PS Command:New-SPConfigurationDatabase
Once you have done this, run the PSConfig GUI (Start > All Programs > Microsoft SharePoint 2010 Products > SharePoint 2010 Products Configuration) and you will find that you are connected to the farm.
Do not disconnect and click next. The standard wizard will now run and setup Central Administration for you.
This is running for me at the moment, so if I find any further gotchas I shall update this post.
A common thing I do for most clients is to create a unique alphanumeric ID that is consistent in length with pre-filled zeros.
Risk list alphanumeric ID example:
However, as has been documented many times (link); you cannot use the ID column of a list in a calculated column. To get over this issue I use a simple SharePoint Designer workflow to copy the ID value to another column (Unique Reference) and then base my calculation on the Unique Reference column.
Step One: Create a common site column for use across the Site Collection
- Column Name: Unique Reference
- Column Type: Single Line Of Text
Step Two: Create a calculated column for the alphanumeric ID
- Column Name: Risk ID
- Column Type: Calculated Column
- Formula: =”RSK” & TEXT([Unique Reference], “0000”)
NB: The TEXT function will prefill the ID with zeros
- Step Three: Add the Unique Reference and Risk ID column to your List or Content Type
Step Four: Create the SharePoint Designer Workflow
- Create a list or content type (SP2010 only) workflow
- Workflow should fire on Creation only (disable Manual and Edit)
- Use the following steps:
- Publish the workflow (list workflow)
- Assign the workflow to the content type (if you have created a redistributable workflow in SPD 2010) and assign the content type to the list (content type workflow)
Step Five: Hide the Unique Reference column in the list / content type
- This will stop the Unique Reference column from showing to the end user.
NB: You must hide the Unique Reference column after you have created and published the workflow otherwise it will not appear in SharePoint Designer
You list items will now have a unique alpha numeric ID
NB: Please remember that automatic workflows will not fire if you are logged in as the farm account (link)
Calculated Column Formula: Probability and impact analysis for risks #SharePoint #SP2010 #ProjectServer #PS2010 #EPM #MSProject #in
Many project managers like to do risk analysis in terms of probability and impact, ultimately creating a heat map when data is rolled up at the project or programme level.
Further information about the methodology can be found here: http://www.expertprogrammanagement.com/2010/06/project-risk-management/
To aid in the creation of these roll up dashboards, we need to evaluate each risk as it is entered (and updated) and assess the probability of the risk occurring against the impact it has against the project (normally in terms of Cost, Resource or Time).
The following chart details this analysis:
NB: Numeric values have been assigned for the formulas listed below
To implement this in SharePoint (either standalone or as an extension to the standard Risks list in Project Server) we need to translate what the Project Manager / Team Members would like to state in words regarding probability & impact into a numeric value for sorting and analysis.
The following Choice columns are added to the Risk form.
User Interface Columns:
|Probability of Risk||Choice||Very Low, Low, Medium, High, Very High|
|Impact of Risk||Choice||Very Low, Low, Medium, High, Very High|
Once we have the UI version of Probability and Impact, we need to use some hidden / calculated columns to convert these values in to numbers.
Once we have these values we then multiply them together:
Probability x Impact = Expected Outcome Value
|Risk Probability Value||Calculated Column||=IF([Probability of Risk]=”Very Low”,0.1,IF([Probability of Risk]=”Low”,0.3,IF([Probability of Risk]=”Medium”,0.5,IF([Probability of Risk]=”High”,0.7,IF([Probability of Risk]=”Very High”,0.9,0)))))|
|Risk Impact Value||Calculated Column||=IF([Impact of Risk]=”Very Low”,0.05,IF([Impact of Risk]=”Low”,0.1,IF([Impact of Risk]=”Medium”,0.2,IF([Impact of Risk]=”High”,0.4,IF([Impact of Risk]=”Very High”,0.8,0)))))|
|Expected Value Result||Calculated Column||=[Risk Probability Value]*[Risk Impact Value]|
Now that we have our Expected Outcome as a number, we can convert this back to a value the end user will understand, report and dashboard from.
|RAG||Calculated Column||=IF([Expected Value Result]<0.05,”Green”,IF([Expected Value Result]>0.14,”Red”,”Amber”))|
For each risk in the list we will now have a RAG value.
Further customisations I end up doing in clients include adding a RAG indicator column showing a graphical representation of the risk using jQuery.
|RAG Indicator||Calculated Column||=”<div class=’convertToHTML’><img src=’/pwa/customisation/images/RAG” & [RAG] & “Sml.gif’ alt=”‘ & [RAG] & ‘” title=”‘ & [RAG] & ‘”></div>”|
The above formula expects three images:
Images in the formula are stored in a document library called:
with a folder inside called:
Run the following jQuery function on the page with the list view on to convert the RAG Indicator calculated column string into rendered html: