Saturday, 17 December 2011

Timesheet Blog Series Fix

Part 1 - Design & data storage
Part 2 - Building the UI
Part 3 - Installation Steps
Part 4 - Final Part
Part 5 - This Post - Caveat to watch out for

Problem: Popup pages for the Timesheet application throw an application error (500 error), the uls log refers to the ribbon tab object not being being available.

Initial Hypothesis:  Ensure the popup pages, that use the Dialog framework are of type web part pages.


More Info:

Timesheet Post Series:
Part 1 - Design & data storage
Part 2 - Building the UI
Part 3 - Installation Steps
Part 4 - Final Part

70-668 Exam

I wrote the 70-668 Microsoft SharePoint 2010 Administrator exam this morning and failed with a score of 647.  I thought I had managed to scrape through and saw that I had failed, rather bruised my ego for about 30 minutes. 

So I had a voucher that needed to be used this year, I've been busy at work (excuses excuses ..) and thought I would know enough to pass as I am thinking of doing the MCM and still need to pass this last of the 4 basic exams.  On the plus side I know that I need to spend more time on:
  • "Designing a SharePoint 2010 Farm Topology"; and
  • "Planning SharePoint 2010 Deployments".
These exams are very useful for ensuring you actually know SharePoint.  I'll have to pay for the exam again and try do it in the new year at some point.  This has highlighted to me that I need more time administering SharePoint and can always use improvement on the technical side of SP2010.

Friday, 9 December 2011

Add Expiry Date to a List

Problem:  I have a list and each time the list item is approved, I need to add 180 days to the expiry date.

Initial Hypothesis: Create a Date and Time site column in the list.  Edit the "Calculated Value" box with a formula that will add 180 days to the current date.

Resolution: The formula to move the expiry date 180 days from the current date is:

Wednesday, 7 December 2011

SharePoint Office Web Apps Cache Storage

Overview: Office Web App is used to work on word, power point and excel document without the need to have the client applications for each of these file types on the client machine. The documents are rendered in the browser for editing.
Problem: My default content database that is hosting my root site collection for the web application grows bigger than the 200GB recommended limit for a content database.

Initial Hypothesis: When a "rendition of the presentation" is available in the cache (stored in a content database) SharePoint will use the rendition to show the document. If there is no “document” in the cache, the appropriate service builds the “rendition”, displays it and adds it to the cache.

The cache is stored in the default content database. From Technet “Content databases also contain the Microsoft Office Web Apps cache, if Office Web Apps have been deployed. Only one cache is created per Web application. If multiple site collections that are stored in different content databases have Office Web Apps activated, they will all use the same cache. You can configure the size of cache, the expiration period, and the location.”
Database location for the OWA cache (a SharePoint content database). You can isolate the Office Web Apps cache from other content:
  • Create a separate content database, set it to contain only one site collection.
  • Configure the Office Web Apps cache to use that database.

Read More:

Other: I have used OWA for thumbnails on a past project for search. So when search results return, I get a thumb nail of the word or PowerPoint document in the results. OWA is pretty heavy and it appears that it will have to convert all documents that don’t have a rendition of the presentation in the cache when a search is performed. This doesn’t seem a good use of resources and a potential bottleneck.  Have I understood how FAST generates preview?  Pls leave your comments.

The Microsoft Word Web App and Microsoft PowerPoint Web App generate a series of images to create a rendition of a document that is viewable in the browser. If Microsoft Silverlight 3 is installed, XAML is used to create the rendition.” - Technet

Wednesday, 23 November 2011

Publishing Features for ALL Site Collections

Problem: The "SharePoint Server Publishing Infrastructure" is only available to Site collections on farms that run "SharePoint 2010 Enterprise or Standard" editions. The publishing feature (SharePoint Server Publishing Infrastructure) adds functionality such as menus for navigation, changing page layout, publishing web pages & swapping master pages.

Initial Hypothesis: If you have SharePoint 2010 Foundation or have not enabled the "SharePoint Server Publishing Infrastructure" you do not have the UI to work with key functionality for your site collection such as swapping the master page or editing the navigation.  Some of this functionality is available through the UI it is just hidden from the site settings page.
For example:
Master pages can be swapped at: http:///_layouts/ChangeSiteMasterPage.aspx
Resolution:  If you want some publishing features you could look at

Saturday, 19 November 2011

Product Evaluation - Knowledge Base from Bamboo Solutions

Problem: I need a Knowledge Base (KB) solution and the OOTB tweeking is OK but needs improvement.  So my options are find a 3rd party product or build my own.

Initial Hypothesis: Using 3rd party solutions is my prefered approach, I don't want to recreate the wheel but the product need to add value and be configurable to meet my requirements.  I have used Bamboo web parts in the past and liek their web parts, so I found Knowledge Base Solution Accelerator.

My Resolution:
I have only tried this on a developer standalone VM but I'm hugely impressed, the UI is good, the functionality is what I'm looking for which makes sense as KB are pretty universal. 

The setup was easy and configuration is good for different requirements so it is a good start.  The cost is $4K per server so very reasonable for the functionality.  The webparts such as the Data View Web Part is usable in other sites.

Definately recommend this solution.

Sunday, 13 November 2011

Web Templates and Site Provisioning

The age old debate on how to provision sites in SharePoint was well and truly answered in my mind, use Site Definitions with feature stapling to provision your sites.  In MOSS I even have xml driven config files to create sites using this technique en masse.  It just irritates me when people mention site templates (the old .stp files).  In SP2010 site templates are .wsp files and have improved from my minor experience however, due to the upgrade issues in MOSS and just how flaky I found site templates in MOSS I recommend avoiding them like the plague.  and I see no reason why Site Templates are better than Site Definitions, some guy always pops up with speed of creation and how flexible they are but I don't want the headaches all over the environment.

Note: Saving as a site template and including content has some restrictions, I believe 50MB of content is the max and I have had issues with content type columns being saved and restored.

Anders Rask did a session on Web Templates and I'm sold.  The question should now be Site Definitions or Web Templates?  Webv templates look great, fairly straight forward and reproducible as they are created in Visual Studio (VS).

These are you options for site provisioning as laid out by Anders as I scribbled them down:
  • Site Templates
  • Site Definition
  • Feature Stapling
  • Provisioning Providers (I've never used)
  • Web Templates (I've never used)
Web Templates Summary:
  1. VS created
  2. Custom ONET is injected
  3. Scoped at sandbox or farm level
  4. Does not support site variations
  5. No content publishing sites
And the answer is ....   read Vesa "vesku" Juvonen post on web templates well provisioning sites.  It's awesome and I have nothing more to add.

More info:

SharePoint Saturday UK Summary

This was my 1st SharePoint Saturday UK, it was terrific.  If you are involved in SharePoint I can't recommend it highly enough.  I amazed more people don't go to it.  I believe there is a good chance the next 1 will be in London.  I think the take up will be huge, well huger! 

Highlights: great sessions, meeting old friends, putting faces to people who help out the SharePoint community, the interest in our new community book (The SharePoint 2010 Handbook), talking SharePoint - people volunteer such great info that would take weeks to find o the Internet; they filter what they are amazed at and tell you in their own words.

Lowlights: 6 hours of driving & I did not prepare for the day, it's hard finding sessions with 2 minutes notice.

No lights:  I won a prize RRV £1500 for 25 user software.  Not sure what is does and what use it is, I could of used an iPad2 or a Idera duck.

Spot lightsTodd Klindt (@ToddKlindt) nice fella and good in both sessions, presents the way it should be done, simple and to the point while being engaging.
Anders Rask session(@AndersRask) : Developing with Custom Web Templates was out the top draw. Definately for me thinking of using Web Templates instead of Site definitions with feature stapling.
Paul Grimley - Deploying SharePoint 2010 Globally – The options, good session relevant to me at the moment.
Brian Culver - Did FAST Search.  Brian did this over loud speaker.  I've done a FAST project so it was not to useful to me but it was a very good place to be if you don't know F4SP (FAST).
Got to mention the guys that setup SharePoint Saturday Nottingham: Mark Macrae (@m_macrae), Anthony Pounder (Tony) & Brett Lonsdale.

Other people thoughts (starlights is the best I can come up with)
Nigel Price
Giles Hamson (Contributor to The SharePoint 2010 Handbook)

Thursday, 10 November 2011

Licencing for SharePoint Developers

I was looking at licencing around development machines.  I thought I was pretty comfortable in understanding it and then I saw this statement "Visual Studio 2010 Professional with MSDN does not include Exchange Server or SharePoint Server.".

Now it doesn't affect my client but I know it affects a lot of Microsoft partners.  I have been under the assumption that MSDN Professional included SharePoint Server standard and enterprise.  You have to have the premium or ultimate editions.

Each test that access your non-production (covered by MSDN) would need I guess the ultimate edition as well.  Perhaps the testing licence covers this.

But pretty expensive, as an example if you had 3 devs, 2 testers, 1 architect and 3 BA's and a PM (They all access the SharePoint test sites covered by MSDN).  This would require 10 premium or ultimate MSDN licences.  In the UK assuming these are new MSDN premium subscriptions (+- £3500 each) this comes in at a wopping £35K; for a small project and this is the dev licencing, it seems very high.   I really dislike the complexity in Microsoft licencing. 

It would actually be cheaper to by 6 MSDN licences for the devs, testers & architect and pay for the SharePoint 2010 standard server licences (£2000/VM), buy OS and buy a coupls of CAL's.

Honestly, why doesn't Microsoft make licencing simpler.  Additionally charging a Project Manager and end users for MSDN for looking at non-production sites £3500 is crazy.

John Stover has explained licencing for SharePoint pretty well in his series of posts on licencing SharePoint.

More info on SharePoint Licencing

Monday, 7 November 2011

Determining the Size of a Site Collection

Problem: You may need to determine the size of a site collection.  In my case I need to move a SP2007 site collection that is a content database with multiple other site collections.  I need to know where to put the site collection data on my SP2010 test environment. 

PowerShell for SP2010 sizing:
$used = (Get-SPSiteAdministration -Identity ).DiskUsed
Move the site collection using Move-SPSite -DestinationDatabase

Stsadm cmd for MOSS Site collection size:
stsadm -o enumsites -url http://url 
More Info:

Sunday, 6 November 2011

The SharePoint 2010 Handbook - Proof copies arrived

Publishing a book has been a real learning experience.  It has been extremely intesting and a lot more work than we originally envisaged.  Below is a photo of the printed manual.  Hoping to publish in the next few days once the lastest proof has been accepted.

We are hoping to hand out a few copies from Suzanne George at the Austin User Group Meeting later this week. 

Wednesday, 2 November 2011

SharePoint Center or Excellence

Overview: What is a SharePoint Centre of Excellence (CoE)?  I suppose that all CoE's share the maxim of "Realising the potential of SharePoint".  There are a lot of consulting firms and large organisations claiming to have CoE's.  I have come across different meaning for a SP CoE, ranging from a group of developers that are assigned out on projects; to CoE's providing guidance on development, customisations, infrastructure, processes, governance and advising on IT pro tasks/administration.  I'm far more in the advisory/governance camp for your CoE to add the most value.

Sonny Mian describes a SharePoint CoE as "In its simplest form a SharePoint CoE is a team of SharePoint experts which promotes collaboration and best practices around SharePoint in order to assist business adoption of SharePoint solutions by establishing and governing information architecture, defining platform strategy, addressing challenges and evolving SharePoint practice/development to economize delivery of SharePoint solutions while mitigating ever increasing security, privacy, regulatory and compliance risks.
The purpose of a successful SharePoint CoE is then to ensure that it remains closely aligned with business strategy by managing Cost, Risk and Adoption of SharePoint."

My Answer: I guess it all comes down to what you need for your CoE, I see it as predominately a solutions mapping advisory service that maps solutions based on your Infrastructure.  Customers bring an application in for review/suitability on SharePoint, the project/solution is verified for it's suitablility to SharePoint (on-premise or SharePoint 365), I get the high level requirements and map each of these to a Work Breakdown Structure (WBS) and lastly do solution mapping.  The solution mapping allows me to choose a suitable way to achieve the requirement.  This allows me then to estimate the time for each piece of the solution mapping.  It works well for both creating your high level design and estimating efforts/cost on a project.  An added bonus is that external agencies/consultancies don't go out and over engineer coded solutions that SharePoint can easily achieve. 

For me CoE is for guidance, making sure all development and usage fits in with the SharePoint Governance document.  This keeps the farm stable, reduces delivery time, improves service to the business ... the list goes on.

SharePoint governance should focus on the implementation of standards, roles and responsibilities, and processes to extract value from SharePoint data while managing risks, dealing with compliance requirements and keeping people and entity information secure.

CoE needs to be tied closely to your platform providers i.e. infrastructure.  You need to know what is available on your farms, capacity considerations, patches, service running, this allows me to map solutions that are appropriate given our capability while maintaining the integrity of the farms.

Another nice benefit is all code and architecture needs to be reviewed and meet our CoE development standards.  So we minimise risk as the architecture developed has to be approved, code is checked, and it is pushed through the correct environments and testing is required to move the application to the next environment. 

The CoE should also speak to infrastructure to highlight missing features, potential changes to the service and review the architecture with the Infrastructure team.  In my experience Infrastructure can get useful information from the CoE about forthcoming requirements that they need to respond to.

The CoE should also provide core coding library's for code that is shared across custom developed applications.  The best example of this is a common logging block.  In my CoE we used Microsoft's SharePoint logging block and customised it for simplicity and to ensure uniform use.  We also have a developer standards document that we require all development to adhere to.  Another core block is a configuration list that is used at a site collection level.  This is like a property bag but can be edited using SharePoint as it goes to a SharePoint list.  The list values are cached for 2 minutes to ensue optimum resource usage.

In large enterprises, the various business units benefit as the CoE provides concise advice as generally it has been seen before.  The SME working on spefic rojects are aware of similar or re-usable code.  The CoE can also assist with vendor selection and building relationships with partners.  This centralised pool of expertise also allows for providing expertise in more specific areas of SharEPoint such as search, workflows or BI are good examples.

What Does the CoE SME need to know
  • Farm(s) architecture
  • Governance - What service is offered and how is it offered via SharePoint
  • Experience in building a wide range of technical solutions using OOTB features, SPD, InfoPath, PowerShell, Visual Studio, 3rd party software such as Ninetex and web parts.   This includes consulting, implementation
  • Experience in integrating SharePoint with various technologies to build business solutions.
  • Migration experience such as SP2007 upgrades, moving sites and content databases, migration tools such as Metalogix, Quest, AvePoint, the list goes on...
  • Upgrading solutions - How to upgrading deployed solutions, how to install patch and service packs safely, change control in your DTAP environments.
  • Good communication skills.
This list really does go on and it's hard to find the right candidates for a CoE but I think they key takeaway is you need good communicators to interact with each other, the business service divisions and the clients (projects requested).
Other opinions:
Sonny Mian - has written a series of posts on CoE for SharePoint - Part 1.

ShareFest session on Coe for Shire

Also See:

Tuesday, 1 November 2011

Routing Email within a Document Library Overview

Overview: The Content Organizer feature (configurable at the site level) allows you to move a file to a specific document library or a folder within a document library. Content Organizer Rules allows you to create routing rules for your documents. Any rules created here are used to route individual documents based on metadata attributes that you choose

The Content Organizer feature only works on document content types.

"Emails can be treated as records and routed just like any other document"

More Info:

So useful for files but not useful for email routing.

Saturday, 29 October 2011

The SharePoint 2010 Handbook

I have been busy lately, setting up a Centre of Expertise for a large organisation for both their SharePoint 365 and there SharePoint 2010 on prem. environment.  In my free time I've been putting together a community book (The SharePoint 2010 Handbook) for the last 5 months.

I have learnt a lot from the other 12 authors and personally I have been exposed to concise chapters that I would not normally look at.  I have found a lot of useful pointers and it's helped me gather my thoughts on SharePoint more clearly.

Order of Chapters
1. Structuring a SharePoint 2010 Practice - John Timney

2. SharePoint Test Environments - Justin Meadows

3. SharePoint Adoption - Veronique Palmer

4. Social SharePoint - Jasper Oosterveld

5. The Art of SharePoint Success - Symon Garfield

6. Exploring Different Options for Implementing SharePoint Solutions - Rene Modery

7. SharePoint Server-based Data Storage and Data Access - Paul Beck

8. SharePoint 2010 Automated Code Deployment - Suzanne George

9. SharePoint Security and Authentication Notes - Conrad Grobler

10. InfoPath 2010 – What is new? - Ashraf Islam

11. Governance in SharePoint - John Stover

12. Creating Dashboards using Business Connectivity Services, SharePoint Designer and other related technologies - Giles Hamson

13. Building Business Intelligence Solutions with SharePoint 2010 - Mark Macrae

Anyway, the formating, editorial is done and now it's time to get the book printed.  So if anyone wants to get the book, the title is "The SharePoint 2010 Handbook".
ISBN-13: 978-1466486744
ISBN-10: 1466486740

Tuesday, 11 October 2011

Book contributer you should know in the SP Community

I have been reading & reviewing John Timney's chapter for our new upcoming book "Structuring a SharePoint 2010 Practice".  It is a great chapter and anyone that hasn't seen John present his roles and salaries session should or at least read the chapter.

Structuring a SharePoint 2010 Practice by John Timney
I won't spoil it but it boils down to SharePoint is a big product, make sure you are recruiting the right person for your role.  It's a lot more detailed and I think will greatly help companies build better SharePoint capabilities using John insights.

Symon Garfield (@symon_garfield) has contrilbuted a chapter called "The Art of SharePoint Success", this covers a lot of areas of making SharePoint succesful from the business perspective, so governance and all that good stuff.

Ashraf Islam (@AshrafSP) has contributed a chapter on InfoPath, I saw him present this topic in April.  I've worked with Ashraf, great developer.  His chapter gets to the point and helps techies get into InfoPath quickly.

Wednesday, 28 September 2011

Creating a shared logging block

Overview:  A client host multiple applications on there SharePoint on premise farm and these need to be logged consistanly.

Hypothesis:  SP2010 provide easy logging ability to the ULS, Microsoft have the SharePoint Best Practices that includes the assemblies for logging, these can be extended to create a easy re-useable set of logging functions.  Key areas to cover are where are you logging to: ULS, Event Viewer.  Sandbox solution can be logged to ULS and the event viewer using a full trust proxy solution.  SharEPoint Online will need to log to a list on the hosted farm.

Microsofts Patterns and Practices code library for SharePoint 2010, is useful for providing the core logging functionality.  The Parrerns and Practices can be extended so the custom method for all application on the farm would call the logging code block that is hosted in the GAC.

More Info:

Updated 28 May 2020:
For C#, Power Platform, React, .... I advise to use: App Insights or
Log4Net is still very common

SharePoint 2010 Language Packs MUI & Variations

Language Packs, MUI & Variations

Multi-lingual User Interfaces (MUI) differ from Multi-lingual Sites (Variations). I.e. application may need labels change but content is not translated. I think of MUI as chrome language resource switching whereas variations are used for translating content.

Language packs I would load :
  • en-US (default & in place)
  • fr-FR
  • es-ES
  • zh-CH (Chinese)
  • Japanese?  But it really comes down to your situation. 
Note: If you do not run the SharePoint Products and Technologies Configuration Wizard after you install a language pack, the language pack will not be installed properly. From MS but I believe this can be done using Powershell. There will be down time on the production farm.

  • MUI can be added at any time and allow the site/application to display multiple languages.
  • MUI can be enabled at site collection or web level.
  • Not all site definitions and templates support MUI so we should apply it only at the web level, is my current thinking.
  • Language packs cannot be uninstalled.
  • Variations may be needed either for translating content in SP2010 or for delivering to specific devices such as Smart Phones and tablets. Having the language packs is the easy part, implementing variations needs design/is complex.
  • Install language packs on all WFE and app servers in the farm
  • Language packs are a good idea to install even if you are not using MUI or Variations as it helps index documents in search when the documents are run in another language.
Update 8 July 2015: Regional browser setting dictate which language is used in SharePoint 2013 and SP2013 does not allow you to change between languages via the UI as it did in SP2010 on the Welcome Menu. 

More Info:

Monday, 12 September 2011

CBA for Developement

Problem: Claims Base Authentication (CBA) requires swapping certificates with each machine that will use CBA on a development domain, if you have 20 dev machines you will need to swap certs with ADFS and 20 developer machines. 

Note: This post assumes all dev machines are on a single domain however several approaches will work on a standalone machine however.  If ADFS is present on the local dev use it for CBA in your development environment.

Initial Hypothesis:
If your VM's are all on the same domain you can always use classic mode authentication and test the CBA on a build server.  This does not make the dev env mimic the test, QA & production servers that are using claims for authentication.
Resolution:You could setup your own STS server/Service (feeding off SQL or LDAP) or use the WIF toolkit to create a claims service.
Or use SelfSTS tool to generate claims that SharePoint can consume.

More info:
Setting up and testing your own STS Service
Simple channel 9 Video explain CBA & WIF

Thursday, 18 August 2011

Building Development Machines

There are 3 schools of thought regardsing development build approaches:
  • Physical (Windows 7 or Windows 2008);
  • VM server hosts i.e. ESXi where the server has multiple VM's and the dev use remote desktop; and
  • VMWare workstation.
VMWare/HyperV are interchangable.
Base physical machine OS will be Windows 7 and run VMWare Workstation
VM needs:
  1. Windows 2008 R2 Std edition x64 – fully patched/updated and include SP1
  2. Add the Active Directory role (ensure ADFS2.0 is installed)
  3. Install Microsoft SQL Server 2008 R2 developer edition x64, install SP1 check using SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') should be at least 10.50.2500.0
  4. Install SharePoint 2010 enterprise edition, I’d suggest using AutoSPInstaller (with 1 service account as provided by the AD such as demo\administrator), the pre-requistes will enable the appropriate IIS and application server roles for you.
  5. Patch SP2010 to SP1 and also ensure you have the June 2011 CU.
  6. Check SP2010 that a site works using IE.
  7. Install Visual Studio 2010 (appropriate edition – pref ultimate).
  8. Add developer tools such as Office 2010, Fiddler, SPD2010, InfoPath2010, Firefox, CKSDev(VSIX extension)2.1, SharePoint Power tool(vsix extension), U2U, ULSViewer, Beyond Compare, resharper. A comprehensive list is here.
  9. Check source control (TFS2010) works.
  10. Check deployment of code works.
Useful to run

Sunday, 14 August 2011

Lotus Notes to SharePoint 2010 Migration Notes

Lotus Notes application migration to SharePoint 2010 can be done using various tools such as:
Quest - Notes Migrator for SharePoint comes highly recommended. Has some real top guys working at Quest.
Binary Tree - Comprehensive tools for migrations specifically a tool to migrated from Lotus Notes to SharePoint.
AvePoint - Migrate Lotus Notes/QuickPlace/QuickR to SP2010.  AvePoint have various migration to SP2010 modules such as for Lotus Notes, Documentum, LiveLink, File System, Stellent, Vignette.
BAInsight offer connectors in this space and can migrate Lotus Note application database data into SP2010 list.
Metalogix - is a good migration tool but it does not allow for Lotus Note migration.  I have used this on 2 client projects and have been happy with the product.
PCVite - Express migrator for SharePoint

More Info: Blog on Notes to SP migration mainly focusing on Quest's Notes Migrator for SharePoint.
Blog post on migrating lotus Notes to SharePoint 2010 -

TFS2010 & Continious Integration

LINQPAD & a great blog

I was doing some research and came across this blog, every post has value.
Check it out

LINQPaD looks like a great tool for LINQ

Tuesday, 2 August 2011


Overview: Microsoft SharePoint Online Code Analysis Framework (MSOCAF) is used by companies or people writing custom code solutions for SharePoint online to help them validate the code meets minimium coding requirments to be deployed to SharePoint 365.  Using MSOCAF code on a local SharePoint 2010 farm can be used evaluated the custom code before it is submitted to MS for approval on SharePoint 365.  Additionally, MSOCAF can submit the custom code to SharePoint Online and perform roll back functionality.

Installed MSOCAF applicationb on my development machine. 
Opened MSOCAF > Analyze

More Info:
Writing solution validators  -

Friday, 29 July 2011

SP2010 Enterprise Search Crawl log error

Problem: Using enterprise search after a clean SP2010 install using autoSPInstaller, I preform my initial full crawl of the content source and receive the following error in the crawl log "The account password was not specified. Specify the password."

Resolution: Edit the Search Service Application to use the appropriate password.

Thursday, 28 July 2011

RFP's for SharePoint

Overview: For some reason many companies seem to select inappropriate vendors to supply SharePoint consulting services.  Smaller projects often tend to be given to consultancies with existing relationships which is great except the consultancies often have little or no experience with SharePoint.  Larger projects at least tend to be more selective and Request for Proposal (RFP) are requested from suppliers.  A good rule of thumb for larger projects is to invite 6 companies to RFP/tender/Invitation to tender(ITT's) and short list 3 companies.  The 3 companies will compete on multiple factors helping highlight the questions you should be asking all the vendors.  Regardless of size always get multiple quotes.

When creating you RFP/ITT/RFT the most important factor is the RFP document contain as much detail as possible for the supplier to accurately tender for the contract.  Even consider building a project team to understand what you want built and you could use a consultancy as they can add appropriate SharePoint language/guidance.  If the tender is clear it helps the supplier provide a concise and accurate tender.  It also avoids the all too common problem whereby the project is agreed and the supplier ends up charging like a wounded buffalo (lots) for tons of change requests.  Holding a short meeting with each supplier helps clarify the Request for Proposal (RFP) document, allows the supplier to get a better understanding of what is required and answer any potential technical questions that will assist the supplier in providing a better proposal.

If the RFP is clear you will find the proposals are a lot easier to compare.  The list below lists what should be included as a minimum in the RFP:
  1. Background (your company and division.  Quest the suppliers background information this must included their SharePoint experience, expertise available, proposed team structure);
  2. Supplier proposed approach (suppliers approach/methodologies);
  3. Aims & objectives of the project;
  4. Project details (details on what you are trying to achieve, do you have a vision for how the solution should be created); 
  5. Technical constraints (technical constraints i.e. do you have a SharePoint 2010 farm, number of users, versions of Software, logical architecture, hardware, current and envisaged usage, remote access, network, state of AD, Office version, users desktop OS); and
  6. Business constraints (Change control, handover, support, training, methodology, existing staff/contractors, access to stakeholders, how do you deploy the solution, DTAP).
Tip: Consider using MS partners, and do due diligence of previous SharePoint projects they have delivered.

    Remote Builds using PS

    Enable Powershell Remoting
    Login to each server that needs to run PS scripts, this will allow centralised deployment of PS Scripts.

    Friday, 22 July 2011

    Working with QR Server in FS4SP

    Overview:  The Query Results Server is an IIS website that allows you to check that FAST search is working.  You can see if managed properties are being populated, navigators are working ect...
    • To use QR-Server you must be on the local machine use the url: http://localhost:13280/
    • SP2010 uses a users session for security so using QR-Server won't work (always returns empty results) so you need to turn off security as follows:
    1.> Turn off security in the config file C:\FASTSearch\etc\qrserver\qtf-config.xml (take a copy before modifying the file);
    2.> Comment out the line element instance-ref name="securityfql" critical="1"
    3.> PS C:\FASTSearch\bin> .\nctrl.exe restart qrserver
    This will make the QR-Server take the xml config security change.
    4.> Perform your query

    Thanks to Job Maelene for all his FS4SP patience.

    More Info:
    leonardocsouza has a great series on FS4SP

    Thursday, 21 July 2011

    Managed Properties in FAST

    Problem: Create mapped managed properties in FAST (FS4SP) using PoweShell.
    Initial Hypothesis:  You can create Managed Properties that are mapped to crawled properties using the UI thru CA.  However, for deployment thru environments it is better to script the mapped managed properties creation using Powershell.
    1.> I created a Document Library that has extra columns for: Section, Appointment, Clinic & Hospital number as shown below.
    2.> Ensure you have performed a "Full Crawl" on the Content SSA (FS4SP has 2 SSA in order for it to work, the content/index and the query SSA).
    3.> PS to retriev the crawled property names, they will be at the bottom of the txt file created and are prefixed with "ows_".
    4.> Find the crawled property name, this will be used in the next PS script that associates the crawled property with the managed property.  Open c:\cp.txt to see the crawled property name, this is usually at the bottom of the file.
    5.> Use PS to 1) create a new managed property, 2) map the appropraite crawled property onto the managed property.
    6.> Run the Full Crawl again thereby propulating the Managed Properties
    7.> Check the managed properties in Central Admin (CA)
    8.> Perform a search to ensure the managed property works i.e. clinic:CL123

    Office Web Apps on a DC

    Problem: Office Web Apps on a developer machine which has it's own domain controller.  Can view word documents in the browser, editing of docx files stangely works.

    FAST previews/thumbails need Office Web Apps running.

    Summary: Install Office Web Apps pre AutoSPInstalller is run.  Then activate in the autospinstaller.  Otherwise install the office web apps but only do the config of the web apps, don't run the SP config wizard.

    Tuesday, 12 July 2011

    Adding FAST for SharePoint to PowerGUI

    Problem: Add FAST for SharePoint 2010 intellisense support in PowerGUI.
    Resolution: Open PowerGUI and add the FAST for SharePoint library.

    Monday, 11 July 2011

    VS2010 Strongly Name key issue

    Problem: Visual Studio 2010 using TFS2010 on multiple developer machines keeps erroring on all developers VM's after they get the latest code "cannot import the following key file" and mentions the sn key.

    Resolution: On the projects properties > Signing > Click the drop down for "Choose a strong name key file:" Click the option, click "Cancel" button.  You are prompted with a dialog "enter password to enter file", add the keys password and select OK.  VS will stop erroring after you have done this once.

    More Info:

    Building a WCF Web Service for InfoPath data

    Problem: Create a WFC web Service to store an InfoPathForm

    Initial Hypothesis:  Project consists of 3 parts: 1)SQL Server table for storing form data, 2)WCF web service for exposting the storage web service method and 3) consuming the Web Service using infoPath.

    1) SQL Script to create the datbase table.  Once the table is available for storage we need to build the WCF web Service.
    2) WCF web service:
    2.1) Add the LINQ to SQL proxy (dbml file) to persist the data
    2.2) Assign
    2.3) Wire up the WCF WS
    Edit as needed (apply business logic)
    2.4) Expose the WCF thru an IIS website on your Dev machine (Create an IIS web site to host the WCF):
    2.5) Publish the WCF using VS2010 as shown below to the local machine
    Ensure the WCF service is available using the browser.

    3) Consuming the WCF WS in InfoPath forms

    How to Add a Service Reference?

    1.> Ensure the WCF exists i.e. http://wcf-service/FormService.svc

    2.> Generate the WCF proxy (VS > Right click the WFE project > Add Service Reference > Insert the url and save the WS reference)

    3.> Copy the contents of the app.config bindings & endpoints elements into the web.config (this needs to be automated in the deployment script thru a configurable feature) Web.config is shown below:

    4.> Call the WCF web Service (consumer)
    WCFBanner.BannerClient ws = new WCFBanner.BannerClient();
    WCFBanner.PatientBanner pb = ws.GetPatientBannerByPatientId("G3");
    lit1.Text = "PatientId: " + pb.PatientId;

    Additional Info:
    Comparing SharePoint InfoPath lists vs forms

    Monday, 4 July 2011

    Web.config change

    Overview: Change all the web.configs for all web applications on the farm except the Central Admin web application.

    Tip: Use the id attribute as shown in the yellow box, it will ensure there are no duplicates created by reactivating the web.config.

    Friday, 1 July 2011

    SP1 and SP2010 June 2011 CU

    Overview:  There has been a lot of chatter on twitter about SP1.  I incorrectly installed SP1 on a dev machine and after reading "So what the Fuss? - Service Pack 1 and June 2011 CU for SharePoint 2010" from Spencer Harbar I thought I'd summerise the correct approach as detailed in Spencer's article.
    • MS has released SP1 for SP2010 and June 2011 CU on the same day 27 June 2011. 
    • There are seperate downloads for SPF (SharePoint Foundation) and SPS (SharePoint Server) updates, you should install both.  Install the SPF update first followed by the SPS update.
    • June 2011 CU is not part of SP2010 SP1, only install the June 2011CU if directed by MS and wait a month to see the fall out regardless.
    • SP1 contains all CU updates including the April 2011 CU plus some other updates not in any CU.
    From Spencer Harbor's blog regarding installation order "I approach the installation like this:
    1. SPF SP1
    2. SPF language packs SP1 (as needed)
    3. SPS SP1
    4. SPS language packs SP1 (as needed)
    5. OWA SP1 (as needed)
    If it asks you to reboot, reboot once after the installs, not each time it asks. Then of course you run PSConfig on each server in the farm.".

    As always test updates on your DTAP environment pre release onto production.

    More Info:
    New features added by SharePoint 2010 SP1
    Patch SP2010 farms

    Monday, 27 June 2011

    Interested in Writing a Chapter for a SP2010 Community Book

    About this book:  This book consists of standalone chapters written by various authors with real world experience of SharePoint 2010.  The content is predominantly non-technical allowing people involved and managing SharePoint 2010 projects to deploy SharePoint successfully within their business.

    More info ...

    Friday, 24 June 2011

    AntiVirus for Windows 2008 Developer Machines or WAF

    Problem: My developer machine always runs Windows 2008 R2 x64.  I use the machine to browse the Internet and would like anti-virus installed.  No workstation based anti-virus will install on Windows 2008 Sever.

    Initial Hypothesis: All the vendors that provide Anti-virus for Windows 2008 are expensive and are Server based anti-virus software whereas I am using my developer machine to surf and occasionally bring on files so I only need workstation based anti-virus.  Unfortunately I have never found a regular anti-virus that runs on Windows 2008 until now ... and best of all it's free and from Microsoft.

    Resolution:  Use "Microsoft Security Essentials"

    List of anti-virus plug ins

    Update: 04 Sept 2013 - Antivirus and SharePoint 2013 (Spencer Harbar)

    Update: 31 May 2022 - WAF sometimes don't have a anti-virus or cost a lot.  This is a simple approach to use a Linux container to provide an Open API endpoint to programmatically allow files and links to be scanned.
    "The SWS Virus Scan Container project leverages ClamAV docker image and provides a REST API over it, which can be used to scan files and URLs. This container image is compatible with Azure Web apps for Containers and could also be run within other orchestrators like Kubernetes (and AKS)."

    Thursday, 23 June 2011

    SP2010 install using AutoSPInstaller from PowerGUI

    Problem: I want to install SharePoint 2010 using Brian Lala's AutoSPInstaller codeplex project however, I want to be able to see values and debug using PowerShell

    Ensure AutoSPInstaller is setup correctly and PowerGUI is installed.  Correct setup is shown below.  Ensure that the xml file is named correctly.

    Tip: Windows has a built in graphical debuggger for PowerShell called ISE Editor
    PS> c:\SP2010\AutoSPInstaller\AutoSPInstallerMain.ps1 c:\SP2010\AutoSPInstaller\AutoSPInstallerInput-WIN-2C5PI8TSRPA.xml

    Press F5 or the arrow to debug.  I have all the .ps1 files in the PowerGUI editor and add break points. 

    Note.  If you hit a break point and press F5 once you are debugging, PowerGUI will not stop at the next break point.  F10 will take you to your next breakpoint or where the next error is trapped.

    Wednesday, 22 June 2011

    SP2010 CU April 2011

    Overview: Cumulative Update for SharePoint 2010 is the latest CU for SP2010 Server. The CU can be applied to an existing far or added be part of the install using AutoSPInstaller for new installations.

    SharePoint Server 2010 cumulative update package  can be found here.;EN-US;2512800

    Installation:  You need to request the file from the link list above.  Download the file to your local machines (It's about 600MB).
    For an update simple extract the from the file 432209_intl_x64_zip.exe using the cmd>432209_intl_x64_zip.exe /extract:.\

     If you want to include the CU in a new install using AutoSPInstaller, you will need to extract the .msp files from office2010-kb2512800-fullfile-x64-glb.exe /extract:.\
    And place the msp files inside the approriate directory in you AutoSPInstaller directory.


    Migrate Physical dev env to VMWare

    Problem:  I have a laptop that boots Windows 2008 R2 and is my based SP2010 dev machine.  I need the machine to be available on a PC will additional memory using virtualisation.

    Initial Hypothesis:  I could take an Acronis image of the laptop and then duel boot the the PC but it's far easier to do a P2V (Physical to Virtual) conversion and run the new image using VMWare workstation.

    Install VMWare vCenter Converter Standalone client.  Open the VMWare converter application.
     Select "Convert Machine"
     Follow the steps as shown below:

     Finish the wizard and once the task is complete you will see the screen as shown below:
    Open VMWare Workstation (V7.1 is the version I used)
    Open the virtual disk created by the P2V process and you will now have you VM running inside VMWare (vmdk extension).

    SQL Name Pipes Error

    Problem: When setting up a development machine, I install SQL before SharePoint.  When I try access SQL Server 2008 R2 using "SQL Server Management Sudio", I get the error "provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server".

    Initial Hypothesis: Named pipes are not enabled by default since SQL Server 2000, need to enable Named Pipes usinng "SQL Server Configuration Manager".

    All Programs >> Microsoft SQL Server 2008 R2 >> Configuration Tools >> SQL Server Configuration Manager >> Enable both “TCP/IP” and “Named Pipes”.

    More Info:

    Friday, 10 June 2011

    DTAP for Office 365

    Overview: Someone has asked me about DTAP environment's for Office 365 after reading my last post on DTAP for SharePoint. I should only comment on SharePoint Online's DTAP setup but the simple answer for Office 365 is to create a separate Office 365 account for each of your DTAP environments. So I would have at least 2 or 3 environments hosted on Office 365. In order of priority: Production, UAT, Pre-production, Testing. Development is done locally so CI and development machines are on-premise. SharePoint Online should use DTAP roughly as outline below.

    SharePoint Online DTAP:
    SharePoint 365 development should be done using a local development solutions using "SharePoint Sandbox Solutions" as this is as close to SP365 as you can get on a development environment. You can use a solution validator (as provided by multiple vendors & MS) or write your own to ensure your wsp deployment files meet all the additional SP365 requirements.
    My Order would be:
    1. Development Environment - local Sp2010 dev machine where all code is deployed via wsps as a SharePoint Sandbox solution. On-premise hosted.
    2. Continuous Integration Environment - perform daily builds of TFS controlled code, TFS code must comply to the custom solution validator that will verify the code will run on SP Online. Candidate for removal as value can be fairly low in smaller deployments. On-premise hosted.
    3. UAT, testing and pre-production - for a small farm I would make this the environment as this will be identical to the setup of production, larger implementations could have 3 separate environments. This machine. Office 365 hosted.
    4. Production - only perform solution deployments once it has been tested on the pre-production environment.
    Summary: Just because you are using the cloud, you should still follow good change control practices. You need to have more than a developer doing his best guess while deploying directly onto your SharePoint online production environment.

    Additioanl Info:
    Alan Richard's article on Lync 2010 via Office online for messaging, voice and video calls and meeting conferences

    Wednesday, 8 June 2011

    DTAP for SharePoint

    Overview: Development, Test, Acceptance and Production (DTAP).

    To implement SharePoint solutions it is a good idea to have DTAP environments. DTAP can be as simple as 4 environments but I would recommend 5 or more separate environments for SharePoint. 
    The base development machines can be standalone VM's with self contained SQL databases, AD, FAST, and SharePoint.  Additional software would include: InfoPath, SharePoint designer, U2U, Fiddler, firefox, IE8 and more.  You should have TFS or a source control repository for all developers to check compiling code into. 

    Continuous Integration (CI)
    This box can range from very simple to a complex complete tear down rebuild on a daily basis with unit test.  At a minimum all code should be deployed daily.  All changes to CI and subsequent environments should be deployed via wsp's and PowerShell scripts.  Sometimes it is time efficient to write administration manual steps, this should be avoided where possible and if it is absolutely required, the documentation must be explicit and testable.

    This environment is a build release, it is stable so testers can perform testing against a specific build.  Bugs should be documented (preferable in tied to source control changes).

    End users should test the system pre go-live in this environment.  This phase can also be split into 2 environments namely: Acceptance and pre-production environments.  Used for user acceptance testing.

    This live system is only changed once the changes have gone thru change request management and have been deployed and tested on all the environments.  Pre-production should be as close a copy of the production environment as possible.  Production and pre-production must be kept as close as possible throughout the life time of the SharePoint farm.

    • Never do changes directly on the production environment. 
    • Build a formalised change control process for SharePoint. 
    • Minimum of 3 environments for small farms is my base guideline. 
    • Environment changes should be done using wsp's and PowerShell not the UI where possible.

    Powershell Setup for SharePoint Developers

    Overview:  PowerGUI (from Quest Software) provides a PowerShell(PS) GUI to perform actions with minimal customisation you get Powershell with Intellesense and colour coding that is SharePoint aware.  Additionally you can plug in a Visual Studio (VS) plug-in (VSIX) that allows you to have PowerGUI functionality directly within you VS IDE.

    1.> Install PowerGUI
    1.1.> Download PowerGUI at I installed version 2.4.0
    1.2.> Install the PowerGUI msi on your development server

    2.> Configure PowerGUI
    2.1.> Open the PowerGUI application
    2.2.> Add the Microsoft.SharePoint.PowerShell module as shown below:
    3.> Write a PS script
    3.1.> Open the "PowerGUI Script Editor" by clicking Tools > PowerGUI Script Editor
    3.2.> Ensure your intellesense is working by typing "Get-SP", you will see the intellisense pick up the GET-SPSite cmdlet.
    3.3> Add the following command and debug with a break point to see PowerGUI in action.  This will get all the Content Types associated to the RootWeb of a specific Site Collection.  Note the variables windows on the right hand side of the PowerGUI interfaces allows you to examine each of the variable objects declared in the script.
    It's not full intellesense but it is a huge help to get you most of the way to writing custom PS.

    4.> Add PowerGUI Visual Studio 2010
    4.1.> Add the "PowerGUI VSX" through extension manager (VSIX) (Tools > Extension Manager > Online Gallery > Search for .. PowerGUI > Download.
    4.2.> VS2010 will reboot, ensure VS2010 is open, click "View" > "PowerGUI Console".  You can use the console to write PS.
    4.3.>  The VSIX also provides an SPI for adding PS Scripts as shown below:

    Error msg:
    PS E:\Windows\system32> Add-PSSnapin -Name Microsoft.SharePoint.PowerShell
    Add-PSSnapin : The Windows PowerShell snap-in 'Microsoft.SharePoint.PowerShell' is not installed on this machine.

    PowerGUI and SharePoint 2010

    Update: 19/07/2012 - I downloaded the latest version of PowerGui and tried to call SharePoint scripts arfer adding the SP add-in and got the following error:
    Get-SPFarm : Microsoft SharePoint is not supported with version 4.0.30319.237 of the Microsoft .Net RuntimeFix navigate to: C:\Program Files (x86)\PowerGUI\ScriptEditor.exe.config and edit the xml.  I comented out the line telling PowerGui to use .NET 4.0.

    Tuesday, 31 May 2011

    FAST Search Overview

    Overview:  Researching FAST for SharePoint 2010 Enterprise, I am logging my findings to provide a basic overview for using FAST with SP2010.

    FAST for SP2010 OOTB Search Results

    • Install FAST on it's own Hardware x64 Windows 2008 R2, need 4GB RAM and 4CPU's min should use 16GB RAM and 8 CPU's;
    • Min disk 50GB, 1TB with multiple spindles recommended;
    • Install FAST on seperate Hw (not on SP2010 or DC machines);
    • Neeed Internet access port 80 and IP adress should be static;
    • FAST need SP2010 Enterprise Edition;
    • SP2010 search must be installed it is still used for the People search results;
    • FAST uses a db for configuration of FAST so back-off your existing SQL Server farm used by SP2010;
    • The indexed data out of the content databases is stored in FAST indexes on the file system not in the SQL Server db;
    Technical Overview:
    Main components are: Crawler (examines the data to be made searchable), Web Analyser and Indexer (performs the search queries).

    Crawler servers maximum of 30 million docs per node (server), crawler produces 2 databases. Sizing is roughly 3GB per million docs in the log file and 4GB per million docs in content.

    Web Analyser servers has a maximum recommendation of 30 million per node. Storage of 5GB per million docs.

    Indexer servers the queries back and recommend staying under 15 million docs per node. Need roughly 120GB/million documents crawled. Due to the high IOPS required by the index servers it best to keep these as physical servers. VMWare experts and tune VM’s for high IOPS but a specialist is highly recommended.

    Licensing is done per server or VM and is roughly 14K/server/VM (Not verified)

    People search is still surfaced using SP2010 Search so don’t remove it from the SP2010 farm. I believe you can use FAST to do people search also but it doesn’t support phonetic searches so probably a good idea to leave people search with SharePoint’s enterprise search.

    Virtualization: Don’t virtualize the SQL Server, use a SAN. Don’t virtualize the Indexer servers.

    Advantages of FAST:

    • Higher performance and scalability

    • Facetted searches are provided OOTB

    • Improved meta data extractors

    • Previews and thumb previews for PowerPoint, word and pdf documents

    • Federation has exact number counts (I love this)

    • Programmatic hook into the content publishing pipeline

    Setting up FAST for SP2010 on a devloper VM  This is based on articles on technet about FAST for SP2010 and is not my original work, it has been addapted to my specific requiremnt for FAST on a development VM.

    Simple Logical Architecture

    FAST for SharePoint 2010 Troubleshooting

    1.> Check FAST servers are running.  PS>nctrl status
    2.> Ensure OSearch14 Windows service is running as 1 of the 2 FAST installed specified accounts 
    3.> Check the Certificate Connection using PS (SharePoint)> Ping-SPEnterpriseSearchContentService -HostName

    PS> Restart-Service -Name "OSearch14"
    4.> Authorisation crawl errors.  Check the account that is performing the crawl has permissions

    • FAST logs are found in <>\FastSearch\var\log
    • \syslog\all.log is the best log for fault finding.
    • \querylogs shows all the logs for queries
    • Use Perfmon to monitor FAST, fast has it's own set of counters. 
    Updated 2017-04-05:  SP 2013 and SP2016 allows breaking into the Search pipeline on the crawl  using CEWS (Content Enrichment Web Service).  Office 365/SharePoint 2013 does not support CEWS.  Also watch out for how Deletes go thru the Web Service!  Also CEWS only has one registration of a CEWS Web Service allowed per query pipeline so look at the Microsoft CEWS toolkit if you need more than 1 web service on the crawl).