What questions should we ask before architecting a SharePoint solution?


In the last 6 months, I was doing a lot of SharePoint presales, architecting, planning and development, the thing that I have noticed that there is a lot of SharePoint guys is missing the some of the core fundamentals when dealing with MOSS solution.

Most of them thinks from a developer prospective only, so they focus on the functionality and ignore the other key elements of a MOSS solution success, that’s why from my point of view they face a lot of failed MOSS projects however they made a pretty cool job with the actual implementation.

OK, skip the lecturing thing and tell us what we missed :), that’s fine; the first thing you need to understand that your solution is not built on an island by itself, it’s a solution which will be functioning in an environment, so the first basic rule [Get familiar with the current environment].

For example, imagine that your are working on document management solution, so you can get to something like the following:

image   

From the simple diagram above, I was just thinking of the required functionality, so I had proposed the following:

  1. MOSS: document libraries, versioning, indexing, search, auditing, may be some workflows, audience management, records ,management, etc
  2. RMS: Rights Management Services
  3. OCR: scanning, text recognition, etc
  4. SQL Server: data storage

Although, this solution will satisfy the client’s functional needs but it doesn’t satisfy other categories of needs.

So, we can categorize the project needs into four main categories:

  1. Functional
  2. Environment
  3. Administration and Monitoring
  4. Ownership

Functional

Not everything is around developing new components, try to search for well known third party or open source components which will fill the required gaps in MOSS functionality or will give you a good boost instead of starting from scratch.

For example, if we have a very good MOSS team they should – at least – have the following ready:

  1. Very good OCR integrated with MOSS document libraries.
  2. Very good workflow tool to decrease the workflows development effort.
  3. Very good interface tool, custom grids, controls, etc.
  4. Very good tool for MOSS deployment, for that one we used to depend on a own developed framework :), but the field is open for any innovative ones.

Environment

Cab be broke down to:

  • Integration

What type of applications the client already have and the level of integration required.

Ex., some clients need the DMS to be integrated with their HR system and this is not clearly stated in the functional requirements.

  • Capacity planning

The current number of users who will use the system, the expected load on the system, peak hours and expected down time.

  • Required level of availability

What is the maximum HW utilization that we can get and the backup, restore, maintenance plans, also what about the minimum accepted down time.

  • Hardware

What is the current available HW and what is the best HW optimization which can be done, ex. Virtualization versus using actual HW

  • Licences and products edition

It is not about just proposing enterprise edition from everything, try to choose wisely and put justifications for every choice.

Administration and Monitoring

We should keep in mind the SharePoint and the IT administrators when we build a MOSS solution.

The basic need for these guys is to keep track of what is going on in the application, and these monitoring needs can be divided into three categories:

  • SharePoint related events

The SharePoint Usage Analysis and MOSS logs are great components in MOSS, however the level of details they provide is not enough for a successful monitor for a MOSS server.

Here, we can take the advantage of using System Center Operations Manager 2007 (SCOM), which provides a great detailed monitoring and reporting.

Definitely, we need SCOM as part of our solution.

  • Application related events

We should implement a very good designed error and logs reporting while developing our custom components, as the Administrator needs these information for better tracking on the application, and we need them for maintenance and troubleshooting.

Enterprise library logging framework is a very good idea to be put into consideration.

  • Users related events

Our system users need also a level of reporting, specially with Manager –> Employee approach, so we should think of some proper reporting from business prospective that helps our system users to keep track on what’s going on.

Ownership

Cost of Ownership, that sentence my manager kept telling me until it became essential part of my thinking 🙂

Most of our clients specially enterprise ones, care a lot about the fact that they need to take the full ownership of vendor custom made applications.

I have seen a lot of solutions fail because the client’s internal technical team was not able to handle and understand the solution.

For example, if we know that the client doesn’t have a good SharePoint administrator currently we have three options to solve this:

  • Put the need for a MOSS administrator as a prerequisite
  • Propose training on MOSS administration if we found that someone is there is capable of handling this
  • Or the most costly and last option to be taken is to provide most of the MOSS related administration tasks as a custom made component in our application and provide it in a way that will be very easy for any IT guy to handle [I remember once we had to do so 🙂 ]

So basically what I’m trying to say here is:

Try to fully understand the client’s needs from all prospective, remove the developer hat and try to see the big picture.

MOSS solutions is not about writing code, it’s about satisfying a customer’s need in a way that will achieve:

  1. Cost advantage – decrease the cost of productivity.
  2. Boost efficiency – people will be able to work more efficiently using our solution. 
  3. Resources utilization – The client have resources that are not utilize, our system will help in that, for example the client already have MOSS installed, but with the default installation, with minor development effort, we can convert it into something that everyone is using daily.

P.S. This is an open discussion post, so please tell me what do you think in the comments section below, and let’s make this article a very good foundation of taking our MOSS experience to the next level 🙂

I hope that helped

Ahmed

Advertisements

2 thoughts on “What questions should we ask before architecting a SharePoint solution?

  1. Clear and organized way but I it is from a very high level prospective which i guess is normal because it addresses Moss solution in general

    My question is what do you mean by Ownership ? do you mean security Roles and who can do what in the system or administration in general.

    1. Thanks, Yassmeen
      Look, in any enterprise the need of the internal team to 100% own the proposed solution is out of question.
      This means they have to know exactly the solution architecture, the source code must be fully commented and clear, all the application events logged, etc
      So, if anything needs attention the internal team itself can solve it without being under the mercy of the vendor (The software builder).
      In order to provide that level of ownership, we need to give the client the following:

      1. Detailed tracking and monitoring
      2. The ability to do changes on the implemented components (Clear, clean, well documented source code)
      3. What is needed from the internal team to master the technology itself (with the required level to own the application), focusing on the components which used in the application.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s