Showing posts with label moss. Show all posts
Showing posts with label moss. Show all posts

Wednesday, October 05, 2011

SharePoint Conference 2011: How eBay Successfully Upgraded their Intranet to SharePoint 2010

These are my rough notes of the presentation by Ramin Mobasseri and Chris Givens of eBay. The Hub is pretty impressive for the way it organizes information for its users and the lengths it goes to in order to default metadata for improved searching.

Agenda

  • Why upgrade?
  • Methodology
  • About the Upgrade (Technical)
  • About the Upgrade (Tactical)
  • About the Upgrade (Functional)
  • Q&A

Why Upgrade

On MOSS 2007.

Got more complex requirements from business users who didn’t want to write code.

Better search.

Enterprise Social Networking

Better device and browser compatibility.

Demo: The Hub – the core eBay site. ESN is Enterprise Social Networking. Proud of combining managed metadata store with FAST search.

Extensively branded (yellow, large icons for the main menu items.

Global Nav

  • Who We Are
  • News
  • My HR
  • Teams
  • Workplace
  • Our Businesses

Have people search and all sites search at the top of each master page.1 click people search using FAST and typeahead

People results

Contact Info, Department info

Search Best Bets

People look for 3 scopes of things at eBay

1. Business Unit

2. Location.

3. Organization

Managed Metadata filters on the left to allow those scopes. DIfficult to tag pre-existing sites with managed metadata

Upon creation of a site you get Best Bets added automatically

Visio Services

Used by IT Tools team – wanted way to watch health of their servers at all times. Didn’t want to spend money. Took 45 minutes to draw visio diagram and connect to backend systems. Can filter by Production and DR environments or by Dev environments.

Why Upgrade

Social Media at work – did pilots – decided on Yammer, Chatter, Newsgator, and other social networkings. Decision to not dictate technologies on end users, but recommend tools they feel are best.

1st Attempt – try to integrate these tools. If it doesn’t succeed, we aggregate.

List of social networking services under My Social link

End users can make a post and it sends to multiple networks.

Expertise locator tag cloud

Expertise Search

Better Browser and Device Compatibility

Built feature grid – against all browsers. And put a level of support from 0 to 4.

Better performance: Increased performance by 29% (for global users) since servers are based in Denver.

Upgrade Methodology

Upgrade took 3 months.

Agilistic Scrum over the Spiral Waterfalls!

Blend of project methodologies. Started in Agile mode. Had MS Architects vet the scrums to make sure everything was in place. Meanwhile business analysts could create waterfall project plan.

Communication Plan: Write to end users, team site owners, don’t surprise them. They used a grid:

Subject | Type | Target Users | Description | Date Sent.

Governance Plan: Your blueprint. Over 345 new features – yes or no answers with each team and work with IT Operations to get their blessing. If “Yes” how is it configured and who can do what?

Feature Matrix for each set of features.

About the Upgrade (Technical)

Had access to MS Architects to ensure everything was possible.

Project Requirements:

  • 3 month timeline, multiple solutions to be upgraded.
  • Data  Mining/ Farm Documentation
  • Detailed Analysis of existing farm
  • 3rd party solutions audit.

Ran a source code comparer to diff the SharePoint files in 12 hive against the OOTB files.

Biggest challenge was 3rd party solutions. Had to build whole mockup of 2007 environment and then try migrations into 2010 to see what broke.

You need business users who can test this to see if it works or not.

Environment:

Large server farm. 14 servers, 20,000 users world-wide, 12,000 sites and 33,000 My Sites. 20+ content databases.

Disaster Recovery. Redundant Data Centers for failover.

eBay has full failover – 4 hour failover time window.

$1.5 M of hardware.

Hardware and Performance Topics

Farm Configuration: Had to figure out capacity planning, how many servers, what the SLA’s are and tolerance for risk. For Disaster Recovery you might have to double the costs.

Microsoft offered access to MS Data Centers to test performance. Problem: eBay required other systems to be connected so that didn’t really work. Microsoft provided Architecture review.

IOPS are VERY important – FAST requires high Input Output for disks

SANs – very expensive, work with SQL Server. Everything else is Direct Attached drives for WFE and App servers.

Capacity Planning -  how many users concurrently – what will the transaction mix be? Plan for growth.

VS Ultimate Test Tools – allows for performance testing of your applications.

Performance Optimizations: Page weights, global network.

High latency network can cause end user dis-satisfaction. Top 3 HTTP request types tend to be: CSS, Images, JS

How to minimize the page weights?

  • Minimize the CSS (remove un-used CSS classes)
  • Compress the CSS
  • Make images 1px wide
  • Minify the JS files

Got page weights down to 67k. Users were happier in global locations

Caching:

  • IIS Output Cache – causes weird page weight issue with browser
  • ASP.NET Caching
  • BlobCache -
  • ProxyServers
  • CDNs

About the Upgrade: Tactical

Provisioning a site – a  custom form. Long running process within a webpart. Anyone can create a site, IT gets a notification.

You specify a Business Unit, Organization, and Office Location default values using Managed Metadata. So when they search it will automatically filter from those sites with those values, they don’t have to do anything. They can find their site using their keywords. This took the longest time.

Rich Proifles: Encourage the end users to modify their user profiles

Offer them incentives.

Get rid of unwanted unused sites (clean your house)

Start your brownbag series early

Build an Upgrade Community to get feedback

Have weekly status meetings with the stakeholders

Make sure you have a Technical PM on the team

Watch out for the phrases: “That’s taken care of” or “That’s finished” – you have to test.

Test test test test

Productivity Hub

Power User Training

About the Upgrade: Functional

Master Pages – colliding requirements between functional groups

Editorial Issues: Did you use Word to edit in MOSS

Watch out for DIV and SPAN tags

Rich Text Editors and Content Editor webparts

The Ribbon: You will see some resistance. Users will settle after training

3 sets of users: Pioneers, Settlers, Stay-Behinds

Managed Metadata Services - Brilliant for search. Allow time for Information Taxanomy, do not rush! Planning to add them to lists and libraries (auto-tagging)? Watch out for Datasheet views.

Service Packs – don’t do SP for 6 months. But plan for it early

Questions

How many people were on the project? 3 devs, 3 IT Pros, 2 PMs (9 or 10 people for 3 months)

Physical or virtual? FAST and Admin was virtual, otherwise it was all physical (due to internal eBay policies)

Training: 20,000 user base – have trained 150 users so far. Train the trainer – Productivity Hub is 3rd most visited hub in the last few months so this is helping with training

Methodology – what do they recommend? Use whatever works. eBay recommends Scrum in Dev and get branding requirements via traditional models. Dev moved ahead while waiting for requirements (had a general idea)

Did you have to change any functionality? Had to rename thousands of host header name changes. InfoPath data connections were statically set – big issue.

Did you have constructive feedback on the intranet? Yes – put up a blog on the issues – have weekly call with Microsoft on post-upgrade lessons learned keeping Microsoft informed

Migration Approach? Was Database Attach in new farm. All database fail – that’s a given. The amount of time it takes to upgrade is directly related to the number of sites – so delete all the empty ones.

Monday, July 11, 2011

SharePoint 2007 Search Quirk–Hit Highlighting on Integers

While working on a SharePoint 2007 custom search project we found an interesting little quirk in the search engine.

We were using the XML iFilter rather than the regular html iFilter due to a requirement to tightly constrain some date metadata as type datetime (with the OOTB filter SharePoint was returning these as text and not allowing proper date range filtering).

While searching for numbers contained within text, if the number was on its own line of text and not preceded by anything else, the result would return correctly but hit-highlighting was not applied.

However, if we put any text at all in front of the numbers, the hit-highlighting applies perfectly.

Therefore the workaround was simply to alter the text that was being displayed to include at least one letter or word before the integers in the line.

Sunday, June 13, 2010

MOSS 2007 Service Pack 2 Backup May Lock and Remove Site Actions Options

We had a very strange error suddenly appear on a client’s site last week – we got the following email:

Anyone know what's happening with site actions menu on the top level site of [the website]? I have limited menu options - i.e. there is no site actions, edit page, create page, create site, etc.

Our support team looked into this and figured out the following:

The issue appeared on the top-level site collection due it being set to “Read-Only” after a backup locked the site and then failed to release it. Changing it to “Not locked” immediately restored the menus.

This is what our guys had to say:

In SP2, Microsoft added a feature to STSADM to automatically lock the site collection during a backup:

http://technet.microsoft.com/en-us/library/cc287967(office.12).aspx

“In Service Pack 2 for SharePoint Products and Technologies, site collections are automatically locked as read-only before a backup process occurs. Therefore, there is no need to use the Setsitelock: Stsadm operation (Windows SharePoint Services) operation. If you do not want site collections to be locked as read-only, you must specify the nositelock parameter that is available in Windows SharePoint Services 3.0 with Service Pack 2 (SP2).”

It is likely that some kind of error or exception interrupted the scheduled backup, and as a result the lock was not removed.

Here is the page link: http://[your address]/_admin/sitequota.aspx.

Hope that helps others out!

Monday, October 19, 2009

Things To Get Excited About In SharePoint 2010

Now that Microsoft’s lifted the TAP NDA and is presenting SharePoint 2010 publicly at the SharePoint Conference in Las Vegas, there will be a spurt of queued up blog posts on the net :)

Here are some things I’ve been very excited about, in no particular order. They are fairly developer-centric.

  • Ability to develop against the SharePoint dlls on a developer desktop! ‘Nuff said.
  • Developer Dashboard – makes it easy to see tracing information and web server details when you are working on a SharePoint site.
  • LINQ to SharePoint – this is some nice syntactic sugar that helps replace CAML a little bit. You can created strongly typed SharePoint entities using a utility called SPMetal and then query and manipulate the data in them using standard LINQ syntax. I was hopefully predicting this in another post.
  • Visual Studio 2010 integration – VS2010 will have a lot more tools to make SP2010 development a snap. SharePoint Project and Item Templates, Feature Designer, and Project Packaging, will hide most of the messy details of creating, packaging, and deploying a SharePoint solution from the developers.
  • Business Connectivity Services – the next level of the Business Data Catalogue. BCS uses External Content Types which look a bit like Content Types, and are defined in the new SharePoint Designer or in Visual Studio and then added to SharePoint using a definition file (a bit like the BDC currently works). Users can then create External Lists in their sites, which pull in the data from these external sources.
  • Client Object Model – an abstraction layer that allows developers to write code that will work in client .NET applications, Javascript (for AJAX type operations), and Silverlight. Basically this is a disconnected, batch-style API that will operate on the existing SharePoint web services and handle requests and responses using XML and JSON.
  • SharePoint 2010 Designer – Whereas SPD 2007 was a warmed-over FrontPage, the new version has been rebuilt with a focus purely on SharePoint. The new navigation panel is great because it shows you a list of SharePoint objects, such as Entities, Lists, Master Pages, and Workflows. What’s great about this is it keeps you thinking about what you are trying to do in SharePoint, rather than where that command used hidden in SPD. Another big win is you can export your SPD changes as a .WSP file straight into Visual Studio for further customization.
  • The Office Ribbon makes it into SharePoint. The Ribbon kind of grew on me in Office 2007. I think it was a clever paradigm to surface many commands that used to be buried. Now the many SharePoint menus and Site Action dropdowns will coalesce into the Ribbon. I think this will make training and support a little easier. The big weakness of the Ribbon is that you often have to remember which tab the commands belong in. I found that was the case with the new SharePoint Ribbon but after a little while you get used to it, and it becomes faster to modify SharePoint pages.
  • STSADM is dead, long live PowerShell! Leveraging the great new scripting environment is a huge win for SharePoint. The ability to write .NET code to manipulate the command pipeline means we will start to see some very powerful “no-touch” deployment and management options for SharePoint
  • More events – now you can find out when your web or list was created or deleted. This may sound like a small feature but this enables some provisioning and discovery scenarios that in SP2007 were not even possible!
  • Enterprise Metadata Manager. I’ve blogged a lot about the important of governance and centralizing metadata. The new Enterprise Metadata Manager makes it easy to import and manage term sets, keyword and tags.
  • Service Application Architecture – the Shared Service Provider was a good idea but it was a bit hard to use in practice. Under the new architecture, you can create Service Applications for things like Excel Services, Forms Services, Business Connectivity Services, and other services that you build or buy, and you can mix and match these in your farms as you like. The services get consumed by web front ends via a standard interface. This should allow a lot of plug-and-play customization of farms. I’m even wondering if there is an opportunity for vendors here…create some services and expose them to clients from the cloud.

There are some other big changes like Claims Based Authentication and Solution sandboxing which are intriguing to me. The Solution sandboxing feature gives me this sneaking suspicion we will one day soon see a Microsoft SharePoint App Store where we can buy, download and run SharePoint solutions in our farms.

Anyway, there’s a lot of exciting new stuff in SharePoint and I think SharePoint development is about to become really fun!

Monday, October 12, 2009

SharePoint: A Product and a Platform

SetFocus just published another of my articles for their Technical Articles section. This one is called “SharePoint: A Product and a Platform”, and discusses the implications of SharePoint as a software platform.

My conclusions are that the platform provides significant capabilities including a unified development environment, reduced maintenance, development, support, and training costs, and may increase the risk of vendor lock-in.

I’ve written for SetFocus before because I have a long association with them, dating back a decade. I had my Java certification training and first job placement through them. For the past year I’ve been developing and teaching parts of their SharePoint programming classes for the SharePoint Master’s Program (I’m instructing evening classes again starting this Saturday).

You can read more at http://www.setfocus.com/TechnicalArticles/Articles/sharepointproductandplatform.aspx. I hope you enjoy it and welcome your feedback!

P.S. The article is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License which means you can modify it and share it around!

Wednesday, April 01, 2009

Ottawa SharePoint User Group – PerformancePoint

Yesterday’s Ottawa SharePoint User Group was a demonstration of Microsoft PerformancePoint, given by Microsoft Canada’s Olivier van Brandeghem. PerformancePoint is a Business Intelligence product that was built on top of SharePoint (MOSS Enterprise only).

Olivier began by explaining Microsoft’s strategy of making Business Intelligence available across the organization. He pointed out that the people who tend to see Key Performance Indicators and Dashboards are be the people who are least likely to act on them directly – so it is helpful to make these sorts of dashboards available as widely as possible. He argued that this form of Business Intelligence is collaborative or “democratized”.

In order to allow this, the technical complexities (of installing the BI product, managing it, producing OLAP cubes and other data sources, and making and deploying dashboards and reports) have to be reduced. This is a key goal of PerformancePoint, and Olivier therefore focused his demo on showing how easy it was to use.

As I mentioned, PerformancePoint was previously a standalone product. As of today, April 1 (International Conficker Day!), it can no longer be purchased separately – it is part of the SharePoint Enterprise Client Access License which means if you own Enterprise MOSS, you get PerformancePoint.

This is a huge win for clients who love the idea of dashboarding and BI but can’t afford even more software licensing in addition to their SharePoint fees. It also fits well into the Enterprise SharePoint space, which also provides basic KPIs, Excel Services, Forms Services, and the underappreciated Business Data Catalogue.

Additionally, Reporting Services can be bundled with SharePoint “natively”, so the Enterprise product fit is very good. PerformancePoint is also part of recent Microsoft moves from licensing by servers, to licensing by services. This is due to the Software+Services initiative I blogged about here.

So what exactly does PerformancePoint give you? Here’s a quick list:

  • Scorecards
  • Analytics
  • Maps of business data
  • Data Linked Images
  • Search
  • Advanced Filters
  • Predictive KPIs (“You will come into some money”)
  • Planning Data

One nice feature is the Central KPI management, where you can set the KPIs in one place and share them all over a portal.

Olivier also demonstrated how Visio diagrams can be connected to KPIs. The demonstration he showed was of a hospital, which was actually a very intuitive way of showing all these capabilities. The Visio diagram for instance was a map of hospital rooms showing infection rate, patient turnover, and other metrics, and the various rooms of the hospital turned red or yellow or green depending on the KPI result.

It seems easy for end users to create their own reports, using various templates. Olivier mentioned the use of MasterPages so there can be a level of consistency in the branding (Reporting Services, are you listening?).

Strategy Map scorecards are available. These are dynamic combinations of KPIs - almost like a workflow or flow chart - that give a more realistic flow of key business metrics. As an example, if you have some red KPIs at the beginning of a business process, your whole process might be flagged red or yellow; but if everything is alright except for a few optional business metrics that are red, your strategy map may still be Go Go Green.

PerformancePoint ships with some built-in web parts that allow ad-hoc KPI manipulation. Generally they provide Master-Detail views and some charting or rendering components such as pivot tables. Each allows export to Excel as you would expect, where you can drill down into even more detail or take the data offline. For more information on the native SharePoint Excel / BI offerings, check out this blog post from the Sydney User Group.

The Advanced Analytics tool called ProClarity also ships with PerformancePoint. Microsoft purchased these guys in 2006 with the goal of beefing up their Business Intelligence offering. ProClarity gives you open access to the OLAP cube to manipulate and report on data. Although the tool is separate in this version, in the next version it will be tightly integrated into the rest of the toolset.

PerformancePoint supports a variety of data sources, including Relational Databases, but the obvious source is an OLAP cube. In response to a question from the audience, Olivier stressed that the goal is not to require SQL Server Analytics, but any OLAP cube provider. Microsoft understands that companies that have made big investments in some other BI vendor, such as Cognos, won’t be willing to shift all their BI bits into another vendor, simply to get dashboarding. So their goal is simply to help surface the existing data into SharePoint.

Olivier also mentioned that Enterprise Project Management, the latest version of Microsoft Project Server, now uses OLAP cubes to help report on project metrics. Anybody using PerformancePoint and EPM therefore should spend just a bit of time putting these metrics to use.

One thing that startled me a bit was the licensing discussion. Olivier mentioned that you can mix Standard and Enterprise User CALs. To be honest this recommendation has tended to vary depending on who you talked to at Microsoft. Sometimes Microsoft representatives say no, everybody in the organization has to use Enterprise CALs if anybody does; other times the response is yes, you can mix them up as long as they are tracked somehow. An official FAQ seems to imply the latter. In any case with dedicated Site Collections it’s pretty easy to lock down functionality to a select few so this is achievable in SharePoint.

The tight integration of PerformancePoint with SharePoint is part of a growing trend I mentioned a couple of years ago. More and more products will end up on top of, or talking to, the SharePoint stack. This is the whole point of having a platform. We can expect much more evidence of this in the next release.

Thursday, March 26, 2009

LDAP Authentication – More Tips

After posting about why LDAP authentication for intranets are a bad idea, I received some more emails with some tips I thought I would share.

Although most people commented that they would try to take the approach of synchronizing their e-Directory identity store to a slave Active Directory, a few were in the unfortunate position of having to implement LDAP anyway.

So if you fall into that camp, here are a few more approaches that might help you. As always your mileage might vary:

Wen He posted some great advice on modifying the People Picker for LDAP Membership providers. This is a pretty common problem – even if the profiles are importing successfully, the people picker may not show them. So here’s the quick code to do this:

you will need to add a key specifying the LDAP Membership “LDAPMember” to the <PeoplePickerWildcards> section into the web.config for the web application and Central Admin as shown:

<PeoplePickerWildcards>

<clear />

<add key="AspNetSqlMembershipProvider" value="%" />

<add key="LDAPMember" value="*" />

</PeoplePickerWildcards>

The line with the key="LDAPMember" and the value value="*" that explicitly specify a wildcard enables PeoplePicker to be able to search for People and Groups by enumerating users from LDAP directory. You know that if you don’t add this line, the PeoplePicker will look only for an exact match on the user ID.

Wen He goes on to describe user and group filtering against LDAP in SharePoint. It’s a great post, highly descriptive and comprehensive.

I also received an email from Krzysztof Wolski – after setting up LDAP and trying to log in he was having problems with “Unknown Error” (one of my all-time favourite exception messages ever!):

We have to use LDAP authentication because this
is an official requirement of our client.
I've solved the problem with "Unknown error" - I've changed the default user
for Application pool and set the identity information in web.config for 81
web application to :
<identity impersonate="true" userName="WIN2003\#USER#" password="#PASS#" />
We've used the same user for Application pool and impersonation.

Krzysztof also mentions one other potential gotcha that occurs if your e-Directory store is set to not allow anonymous authentication. He solved it this way:

We've successfully installed Sharepoint with LDAP Authentication.
One more thing we've added to the LdapMembershipProvider in web.config:
    <membership>
      <providers>
        <add server="#IP#" port="389" useSSL="false" useDNAttribute="false"
userDNAttribute="cn" userNameAttribute="cn"
                userContainer="o=MyCompany" userObjectClass="user"
userFilter="(&amp;(ObjectClass=inetOrgPerson))" scope="Subtree"
                otherRequiredUserAttributes="sn,givenName,cn"
name="LdapMembership"
type="Microsoft.Office.Server.Security.LDAPMembershipProvider,
Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71E9BCE111E9429C"
                connectionUsername="#USERNAME#"
                connectionPassword="#PASSWORD#" />
      </providers>
    </membership>
eDirectory configuration in our case was configured to not allow anonymous
access.

Thanks Krzysztof for the great tips!

I hope this information helps those of you doing LDAP integration – but even more I hope you don’t have to do this in the first place :)

Friday, February 20, 2009

Using LDAP Authentication With A SharePoint Intranet Is A Very Bad Idea

A couple of years ago I wrote an article explaining step-by-step how to integrate Novell e-Directory with SharePoint. At the time it was pretty much the only available information on the web. Since then I have frequently been asked for tips on integrating LDAP with SharePoint intranets, most recently last week. So I thought I would provide some updated advice:

Run away! Run far, far away.

  1. Get one of your colleagues to distract your boss.
  2. Climb out of your office window.
  3. Head for the nearest bus, train station, or airport.
  4. Change your name.

If somehow your boss or client finds you and demands that you integrate LDAP with the SharePoint intranet, explain why it's a very bad idea.

Why is it a Very Bad Idea?

 

From a technical perspective LDAP integration is really just Forms Based Authentication (FBA) - you are passing in a username and password to SharePoint, and these happen to be authenticated via LDAP calls to an identity store somewhere.

Using LDAP, logging into your SharePoint portal will look like this:

LDAP Signin - Additional Zone

Doing this is a big mistake!

Reason #1: Time Spent Tinkering

Now in order to do this, there are a variety of technical steps you need to take. If you run into problems anywhere along the way, you will spend your valuable time trying to figure out if the problem is in your Role and Membership provider settings, in your various web.configs, your LDAP query, or something else you have to enable in SharePoint.

This means you are spending your effort (and your client or employer's money) struggling to implement something that with Active Directory would "just work".

Some might argue that this isn't a great reason - after all plenty of time and effort goes into modifying SharePoint to accomplish other requirements. But any effort you expend making SharePoint work without AD is time you could be spending modifying SharePoint to address problems the business actually cares about. The business does not care that its credentials are currently stored in Novell eDirectory and SharePoint prefers them in AD.

Reason #2: Your SharePoint Intranet Won't Work The Way You Expect

Portal users expect seamless integration and functionality when they are using SharePoint for the intranet, because that's what all the marketing materials teach them to expect.

Building an intranet without Active Directory can lead to some surprising and annoying side effects. Out of the box web parts or controls like the Organizational Hierarchy don't work very well without Active Directory. You can make them
work with ADAM or by exploring 3rd party replacements but you'll have to test any portal functionality you think you are likely to use.

Also, the user experience with Microsoft Office integration can become a problem. Open up Word or Excel when logged in using LDAP credentials and you might see this:

LDAP Word Integration Problem

It's fun explaining that to an end user!

SharePoint Designer is also tricky - it wants to automatically authenticate you using windows credentials, and throws errors when it runs into forms based authentication.

I'm not claiming that these issues are insurmountable, but collectively they introduce new bugs, development, testing, and management issues, increase cost and risk, and potentially annoy your users. Is it really worth it?

How Is that Different from Internet or Extranet Environments?

Many extranet and internet environments use Forms Based Authentication without problems. Administrators or installers have to modify SharePoint to work in these zones using Role and Membership providers...So why is it ok for those environments to use FBA but not the Intranet?

Again, it's a question of user expectations. When a user logs on to an extranet or internet site, they don't expect seamless Office integration and automatic access to file shares using their desktop credentials. When they use SharePoint intranets, they do expect these conveniences.

All the literature and sales material tells them that they should be able to interact directly with SharePoint intranets via Outlook, Word, and Excel - without annoying popup boxes and workarounds. They expect to be able to use all of the out of the box controls and web parts like the Organizational Hierarchy, and don't want to hear excuses like "that works best with Active Directory so we can't use that now".

So What Should You Do?

I recommend synchronizing your e-Directory identity information into an Active Directory domain and building SharePoint on top of that.

There are a variety of ways to do this but one way you can investigate is via Novell's IDM which can synchronize between e-Directory and Active Directory.  Your e-Directory is still the master identity store, but any e-Directory changes get automatically sync' ed to the child Active Directory. Here's a link that might help: http://www.novell.com/coolsolutions/appnote/18349.html

You can definitely make SharePoint use multiple identity providers - but the reality is your SharePoint portal becomes much more flaky and expensive to manage. These days there are many ways to populate Active Directory from some other identity store - I always recommend that since it is less effort and risk down the road, and (probably) less cost as well.

SharePoint is complicated enough without adding to the challenges.

Of course your mileage might vary. If you have attempted (or succeeded) in integrating a SharePoint intranet with LDAP what were your experiences? Besides IDM, are there other good ways to synchronize Active Directory with a master identity store?

Wednesday, September 17, 2008

No More Metadata Migraines: Easily Manage Your Centralized Taxonomy

Well, I just finished my preso, which seemed to go very well (luckily!).

Basically my session covered best practices for taxonomy in SharePoint, including things you need to do (or not do) to make your lives easier when managing your portal's content.

It also covered ways you can leverage your metadata using Content Query Web Parts, property searches, and advanced searches.

Mindsharp will probably be making the presentation available on their SharePoint Best Practices website shortly. In the meantime I've uploaded the presentation in PDF format here: 

http://www.echotechnology.com/Events/Documents/No%20More%20Metadata%20Migraines%20-%20echoTechnology%20-%20SharePoint%20Best%20Practices%20Conference.pdf

As always I'd love to hear back from you about what your best practices are. My email's in the PDF, you can contact me via LinkedIn (http://www.linkedin.com/in/nicholaskellett) or you can comment on the blog.

The conference is over today, and we've really enjoyed it. We had lots of great conversations in seminar rooms, around the lunch table, and around the bar. It was neat to meet so many people who are enthusiastic about SharePoint, trying to do the right things with it, and willing to share their knowledge. I'll be blogging a bit more in the next few days, to try to transmit what I've learned.

Finally, congratulations to Mark Elgersma, Ben Curry, Bill English, and all the other Mindsharp folks who worked so hard to pull this off!

Thursday, March 20, 2008

Colligo: SharePoint Unplugged

One of the bigger issues with SharePoint is how to make it available to offline or remote users, such as frequent business travellers. There are many vendors working in this space including iOra (now Infonic) and Syntergy, and tools such as Groove are also very useful for this kind of requirement.

One vendor I've heard good things about is Colligo. Colligo has a product that presents SharePoint sites in a seamless online/offline manner so users don't need retraining.

This morning I decided to download the Colligo Reader. It provides a one-way sync from a SharePoint site to a computer or laptop, and is free for non-commercial use. It works for Windows SharePoint Services 2.0 and 3.0 sites, for SharePoint Portal Server 2003, and for Microsoft Office SharePoint Server 2007.

Colligo requires a .NET framework client install on the destination computer, and uses the SharePoint web services so it will be fully supportive of any upgrades and does not require any additional components or installs on servers or any other kind of tinkering.

Downloading it required a quick and painless sign-up at Colligo's website, and then a small install process taking only 30 seconds. Following that I had to quickly activate the program over the internet and I was off and running.

The user interface is spartan and SharePoint-like: this is a good thing as such a tool should be simple and effective at displaying and managing the site content rather than tossing up lots of bells and whistles. The SharePoint look-and-feel is also a must as it makes the whole experience seamless to end users. Here's a screenshot of the basic interface.

 Basic View

To create a sync to a SharePoint site, I used a personal WSS 2.0 site I've had for a few years. In the top left-hand side of the screen I selected the "Site" dropdown and clicked "Download Site". This popped up a very simple box that asked for the URL and the security credentials.

In only a few seconds I was connected and presented with the names of all the SharePoint lists in the site. Next to each was a checkbox so I could choose to synchronize with them. Having selected them all, it began to download the contents:

Synchronization

Sync options include sync'ing a particular site, sync'ing multiple sites, and sync'ing everything. At the bottom of the screen is a "Sync Issues" panel that helps manage any items that failed.

Following the successful download, I was able to read all the content on my WSS 2 website. Each list showed the appropriate views and metadata columns. Filter and sorting were enabled to help manage the content display. On the left hand side the Quicklaunch menu items were all present and there was breadcrumb navigation at the top of each list.

One thing I didn't see (at least in the Reader version) was a search functionality. This would have been very useful. One of my main criticisms of Groove is that its lack of search makes it virtually impossible to find offline content once you have a lot of content and folders. Although Colligo Reader does a much better job at presenting and organizing content (due to its SharePoint nature) search is a must-have in any offline synchronization tool.

Security is applied to the site and list content according to the credentials used to access the site. At least in the Reader version this means no switching between various user accounts for different permissions. Frankly I doubt anyone using the Reader would want to do that - that tends to be an administrator / developer activity. For the purposes of such a tool it only makes sense to manage the content using one set of credentials so I don't regard this as a drawback.

You can download Colligo Reader at their website. http://www.colligo.com/products/sharepoint/reader_how_it_works.asp. In addition to the Reader, there is a two-way Contributor version that allows offline modification of SharePoint lists. This is obviously the real value-add for Colligo. According to their website, pricing for this varies depending on the flavour of Contributor you buy - there are versions that integrate with Outlook and others that work on  PocketPCs.

All in all I was favourably impressed with the Colligo Reader - it is simple and intuitive and functioned exactly as I expected, and I plan to use it in the future.

Monday, March 10, 2008

MOSS: Microsoft Online SharePoint Server

Awhile ago I blogged about the experiment Microsoft was making providing SharePoint managed services to some of its biggest clients, what I called "SharePoint + Services". I guess the verdict was favourable - Bill Gates recently announced SharePoint Online.

The announcement took place on March 3 at the SharePoint Conference in Seattle. http://blogs.msdn.com/sharepoint/archive/2008/03/02/don-t-miss-the-announcements-by-bill-gates-to-kick-off-the-sharepoint-conference.aspx

Some key features include a guaranteed uptime of 99.9%, the regular out of the box SharePoint functionality, Microsoft Forefront AV scanning, SSL access, and (in the case of the dedicated environment) a data trust to the clients' Active Directory to allow AD integration. Templates will likely include the Fantastic 40 and each user gets 100MB of storage standard.

From an auditing perspective Microsoft offers the following:

  • Sarbanes-Oxley self assessment and external audit support
  • SAS 70 Type II self assessment and external audit support
  • Security assessments
  • Intrusion monitoring and detection

The auditing is a good way of reassuring nervous customers that hosting in the clouds won't present any legal threats.

I rushed to sign up for the beta but this is currently only available to some US-based customers. After a few months of beta testing hopefully they will release to the global market.

It remains to be seen what the pricing structure will be (Microsoft suggests they will follow the regular Software-as a Service model of "pay per user per month").

For small and medium organizations online SharePoint hosting may be very tempting as they will forego the complexity of planning, configuring and managing SharePoint in their environment and concentrate on using it. Larger organizations may be better placed / more interested in managing their own systems, or (depending on the price) may find it too expensive when scaled to thousands of users.

Current MOSS managed service providers include WebCentral in Australia, eMantra, and Altus in Canada and the United States.

Sunday, February 17, 2008

Starlight Day SharePoint Site

Starlight Day is an annual event when volunteers from across Australia donate their time and money to give sick children a wish. This year Dimension Data Australia worked with Starlight Children's Foundation to create a new public Internet site that would allow the Foundation to sign up and track volunteers, as well as modify content on the fly, rather than going through the existing manual and laborious process.

For the last few months I've watched my colleagues working hard to create a MOSS Internet with some custom application development and last week their efforts were rewarded when the site launched. I thought it would be nice to profile the site as another example of what can be done in a short time frame with SharePoint, and to identify the challenges that they overcame.

The Solution

MOSS 2007 was used with the Internet Connector License to allow content updates by Starlight staff. In addition, a custom volunteer roster system allowed visitors to find and sign up for Starlight Day activities based on a postal code.

The Team

In alphabetical order, the Microsoft Solutions - Application Integration team members who worked on Starlight Day are:

  • Slava Gorbunov (Roster custom web development)
  • Hatim Hamid (Quality Assurance)
  • Marianne Hidalgo (Quality Assurance)
  • Abdul Khan (Deployment)
  • David Langeder (Practice Manager)
  • David Marsh (Deployment and web development)
  • Karina Smith (Visual Design and Information Architecture)
  • Viraf Wadia (Project leader)

Viraf: “I was responsible [for] delivering the project...It has been a fantastic achievement from the team. Makes me feel proud in helping Starlight achieve their goal of having an internally hosted internet site that they can manage from a content and branding perspective”

Hatim: "Basically, I have been testing, testing and more testing. Specifically, I have been [testing] the Starlight Day Roster...The other thing I have been doing is some performance testing."

David Marsh: "It went well - I could have made more structure and process around the deployment strategy. The best part was seeing the final design come together using all the WCM features."

The Challenges

Essentially Starlight Day presented the familiar challenges of any custom web application and website launch:

  • Coming up with the Visual Design and site architecture
  • Content development
  • Coding and refactoring
  • Deployment and change management
  • Bug, integration, and performance testing
  • Project management
  • Timeframe: The entire project including planning, infrastructure, installation, customization, content delivery, and live deployment fell within a 3-month window.

Development

The idea was to use as much "out-of-the-box" as possible. The customizations were broadly limited to:

  • Preventing core.js from loading for anonymous users
  • Creating rotating list of images using Summary Links Web Part and JavaScript
  • Preloading image scripts
  • Storing images in separate libraries
  • The Volunteer Roster was the most significant development piece

The team had to quickly come up with functional requirements to identify precisely how the process would work. The requirements had to be "as simple as possible, but no simpler". Then visual design had to commence to identify what pages were required and what the flow was like. At this point coding began in earnest using .NET 3.0.

Deployment

Deployment was carried out using SharePoint's Feature and Solutions model with some batch files to automate. The team used STSDev from CodePlex to help manage features and solutions. Content was updated live by Starlight's staff while work was still underway, so coordination and communication was critical.

They did a content migration using WCM instead of a database migration (using attach and reattach). David Marsh suggests that might have been better because some things in content migration didn't work such as some pages became corrupted and some options in SharePoint no longer worked since they were referencing the old development server's URL. Fixing this required some manual tweaking. In hindsight he suggested they needed to plan for more time to fully integrate roster functionality into SharePoint (via custom web part or as ASPX pages).

Bug Testing

Not all URLs were fixed up automatically during the migration to production. Database migration would have fixed this. The design layout and content needed to be tested in all browsers. Not surprisingly, older browsers had issues with the CSS - not a SharePoint issue, rather CSS-related.

Key Learnings

  • More prototyping is required up front to verify and validate design concepts. This de-risks the project and nails down task deliverable times
  • Plan deployment earlier - document and test each type of deployment
  • Never underestimate the time it takes to test and deploy
  • Use enough environments to adequately develop, integrate, test, and manage content approval and staging

Starlight Day is May 2, 2008. You can view the live site at http://www.starlightday.org.au/. The custom roster page is at http://www.starlightday.org.au/StarlightDay/GetInvolved/Volunteering/Pages/VolunteerForStarlightDay.aspx. Congratulations to the team for a job very well done!

Tuesday, January 29, 2008

Microsoft Developer Roadmap Documentation

On Saturday Microsoft released documentation outlining step-by-step roadmaps for some common SharePoint tasks. So far these include the following activities:

  • Setting up SharePoint servers
  • Deploying code and customizations
  • Creating sites and subsites
  • Page designs
  • Document management
  • InfoPath forms
  • workflows
  • Business Intelligence
  • Records Management

Each section is a detailed, matter-of-fact outline of the tasks that should be undertaken and the order in which they should occur. The sections frequently reference content which already exists on MSDN, Technet, Microsoft team blogs or third party bloggers.

The SharePoint team hopes to fine-tune the content over time if the community marks these sections as helpful or submits suggestions or comments on them.

Full details are at http://blogs.msdn.com/sharepoint/archive/2008/01/25/announcing-design-and-build-sites-for-office-sharepoint-server-2007.aspx and the documentation itself can be found at the Technet site at http://technet2.microsoft.com/Office/en-us/library/df6a8515-f49a-4792-8d51-dec4648415541033.mspx?mfr=true

So far in the last year we've seen the release of a mass of content, ranging from

  • Microsoft's Interactive Development Map WPF desktop tool;
  • End user training via desktop install or the SharePoint Learning Kit;
  • SharePointPedia;
  • The SharePoint and WSS SDKs;
  • this latest MSDN and Technet documentation;
  • and of course a multitude of blogs.

It's a full-time job to keep up on the platform, but I guess it keeps us out of trouble!

Saturday, January 12, 2008

Anonymously Searching User Profiles in MOSS

I had a requirement the other day to enable anonymous access on an internal portal and allow users to search across the user profile database - to create what was essentially a corporate directory.

The anonymous "core requirement" was to ensure users didn't have to log in when trying to look up their colleagues (they are using the dreaded Novell e-Directory which does not play nicely with SharePoint). Anyway this time the issue wasn't importing the e-Directory accounts but rather a 401 - Unauthorized error that kept appearing when trying to view the people results.

I tried the following things:

  • I enabled Anonymous access first on the Search Centre lists and libraries and eventually on the entire site collection
  • I added IUSR as a member of Intranet Viewers and made sure that in the policy permissions for anonymous users they had a limited read policy setup
  • I tried to add IUSR_ to the SSP Settings - "Process Accounts with access to this SSP"
  • I manually turned on anonymous access to some of the individual mysite site collections that I was trying to view
  • I modified the My Site settings in the SSP to allow IUSR to be part of the default readers group and for any existing My Sites. Then I had to go to that My Sites collection and give READ permissions directly to the IUSR account
  • I created a custom permission level called "Anonymous View" in the site collection, added View Application Pages, View Items, View Pages, and Open permissions. Then I added the anonymous view permission in the "Intranet Visitors" group to ensure they could get these extra permissions.

Nothing worked. If I tried getting results back directly from the People Search page, the 401 error would instantly appear. For some reason though I could perform a user profile search if I used the regular All Items search with the People scope. However when clicking on the results the 401 error would subsequently appear.

The conclusion: anonymously accessing user profile data does not seem to be supported out of the box. I suppose some custom code might fix this but my goal was to adhere to the vanilla SharePoint as much as possible.

This issue seems to be by design - the user profile data includes colleague information, social relevance algorithms, and organizational hierarchies. None of that information would pertain to the anonymous user account. Additionally, the actual user profile data may be considered sensitive.

Has anyone else come across this limitation, and if so how did you resolve it please?

Tuesday, December 11, 2007

Quick and Dirty Web Parts

SharePoint is a joy for Rapid Application Development and prototyping. It's great fun to sit with clients and run up site hierarchy or document taxonomy on the fly, in response to their direct feedback.

When it comes to any custom development, there is a bit more heavy lifting - especially if there's a requirement for custom web parts. This starts to involve Code Access Security, custom control lifecycles, and change management.

What if you just want to do some RAD custom development?

There are some nifty shortcuts to help with web part prototyping. First of all, the SmartPart and Son of SmartPart are wonderful little controls created by Jan Tielens. They make it easy to create custom user controls with full design support and then make those work in a SharePoint context.

In a similar vein, MOSS includes the very useful Page Viewer Web Part. This is available right out of the box with no assembly required. Follow the steps of this example to use it with very little effort:

1. Create a basic web page, Default.aspx with the following script:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CustomSharePointWebApp._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="Field1" runat="server"></asp:TextBox>
        <asp:Button ID="SubmitButton" runat="server" Text="Button" />
        <asp:Label ID="ResultLabel" runat="server" ></asp:Label></div>
        <asp:RequiredFieldValidator ID="Field1RequiredFieldValidator" ControlToValidate="Field1" ErrorMessage="Field 1 cannot be empty" runat="server"></asp:RequiredFieldValidator>
    </form>
</body>
</html>

2. Use the following code for the code-behind:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace CustomSharePointWebApp
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                ResultLabel.Text = Field1.Text;
            }
        }
    }
}

3. Now right-click the project file in the Solution Explorer and click "Publish". For target location, enter the full path to the _layouts folder as well as the name for your custom app, ie:

http://[Your Sharepoint Portal]/_layouts/[Your web app name]/

This will automatically migrate the code and create a folder in the _layouts directory.

4. Now create a test team site somewhere on your portal. Add a Page Viewer Web Part to the page, and point its link to your application's default.aspx page.

5. You should now see your application appearing in the team site, with full SharePoint context, Master Page, and site hierarchy. Notice that in the example we created, the default.aspx application lifecycle is handled completely outside of SharePoint. By deploying it in the _layouts folder we can lstill everage the SharePoint user context if we need to (for security trimming, user profile information and the like).

Custom Form with Page Viewer

Happy prototyping!

Caution: The Page Viewer Web Part uses iFrames, which present some potential security concerns, such as cross-site scripting attacks. iFrames are probably safest if hosted internally; don't deploy these to public-facing sites unless you've closely examined the security implications!

Sunday, November 18, 2007

SharePointPedia Is Live

The Microsoft SharePoint group has launched SharePointPedia, which is intended to be a community site for sharing knowledge around SharePoint. Although the name might imply a Wikipedia style wiki collaboration system, the site is really an easy way to link to, find, and rate articles that exist elsewhere on the net. As the site itself says:

SharePointPedia is not a wiki. It’s a “pedia” in the sense of being a compendium of useful content, but rather than being limited by just wiki functionality, it leverages the much broader set of capabilities in SharePoint. SharePointPedia is also about community, where you can find and connect with others, who have similar interests as you or who have recommended content relevant to you.

It is easy to submit new content and there are a variety of folksonomy tags such as "Collaboration", "Personalization", "Web Publishing" to tag against the article submission.

The value of the site will largely depend on the community submissions but since there is so much content out there it may prove to be a useful launching pad. Right now everyone spends a great deal of time tracking all over the net trying to research particular SharePoint issues and hopefully this compendium will help streamline that.

You log in using your Windows Live ID and get ratings based on your contributions. The 'pedia is built using MOSS 2007 (of course!) and is located at http://sharepoint.microsoft.com/pedia/Pages/Home.aspx.

Monday, November 12, 2007

SharePoint Migration With MetaLogix

I recently had the chance to evaluate a number of SharePoint content and site migration tools. Past migrations I've done have been performed using the out-of-the-box content migration using the Pre-Upgrade scan, but I have an upcoming requirement to leave the existing SharePoint Portal Server 2003 site and content in place and migrate it slowly to the new MOSS 2007 server over time.

This required an evaluation of third-party site migration tools. One of the ones I looked at was the MetaLogix SharePoint Site Migration Manager. The evaluation license allows you to migrate 50% of the content for a few days, which is enough to run the software through its paces.

The Migration tool installs on a client desktop and this GUI handles 95% of the migration tasks. However if you want the migration process to do things like map the user accounts you'll also need to install a special service on the target server.

I liked MetaLogix Migration Manager's intuitive interface. After the installation it was easy for me to add a reference to both the test SPS 2003 portal and the test MOSS 2007 portal. This is done by typing in the URL and either using the default portal access account or manually specifying it.

The interface has three major views:

  1. The default "Explorer" view, which is a complete site hierarchy view of the sites you have added;
  2. "Browser" view, which renders whatever site node you have selected in the explorer view. It's a great way to quickly view the content of a site or list; and
  3. "Item" view, which shows you the content of lists and libraries.

Migrating content or sites between portals was as easy as right-clicking the source node, clicking "Copy", and right-clicking on the target site and clicking "Paste". A dialog box shows the progress and the result appears in the Log window at the bottom of the screen, which you can always refer to. There is verbose logging in a text file.

Paste Shared Documents List

Other nice features:

  • Batch mode, so that all actions can be scripted to run at scheduled times. The batch file is in XML format so it can be programmed and is human-readable.
  • Delta migration: You can choose to only migrate the changesets instead of all the content each time.
  • List copy: You can choose to append and concatenate multiple libraries or lists together which helps merge them in the new portal.
  • You can migrate versioning and security permissions
  • Replace Within Field: This is a quick string search that allows you to replace text in content you've migrated, such as URLs. In the future I'm told this will be an automatic step in the migration.
  • Mapping to site templates. You can explicitly map SharePoint 2003 site templates to the new MOSS templates (it will attempt to map them automatically by default). I noticed the mapping options seemed to include the Fantastic 40 site templates which was a nice touch.

The only issue I found with the product occurred when I tried to migrate the content on an SPS 2003 Area over to MOSS 2007. It brought all the content, web parts, lists, and libraries over with the exception of the Area Detail and Browse Area By web parts. However as those two web parts relate to the old SharePoint 2003 Area concept which no longer applies, I'm not too fussed. The MetaLogix staff were keen to help me investigate this, if I had been willing.

During the course of the trial I spoke to Julien Sellgren and Rasool Rayani at MetaLogix. They were helpful and responsive to my questions, giving me a walkthrough via a webcast and extending the evaluation period while I was testing area migration. Rasool also explained to me that they are releasing feature packs and updates on a 6-week basis so the product is evolving quickly.

You can learn more about MetaLogix and download the evaluation version at their website.

Wednesday, October 31, 2007

SharePoint As a Development Platform Debate

There's a very heartfelt debate raging at CodeBetter.com over whether SharePoint is a good development platform. The breakdown seems to be between "developers" and "SPs" or "SharePoint People".

Jeffrey Palermo kicked the discussion off by discussing what he feels makes a good development platform and then contrasting those points with the current state of SharePoint 2007 development.

I can understand the concerns of those who don't feel it is an ideal development environment. One of their biggest issues is how to manage the artefacts that SharePoint generates, especially the settings that can be made via the browser but not easily replicated to a source repository for sharing and versioning.

Many of these changes only live in one of SharePoint databases and so are hard to track. It goes against a programmer's mindset when these things are intangible and hard to track and synchronize.

Microsoft and the community are releasing more tools that can help manage this and perhaps in Office 14 there will be some easy facility to export and import configuration settings as an XML file. This would make it simpler to do proper change management with SharePoint.

There is also the fact that SharePoint is good at glossing over a lot of very complex interactions. Running underneath the hood is a SQL Server database, web services, a complex object model, Windows Server interactions, office integration, ASP.NET and Windows Workflow Foundation, a series of providers...it's very complicated but SharePoint makes it look easy. So when anything goes wrong somewhere in the stack it can be hard to figure out. In this sense it's a victim of its own success at abstracting the lower level plumbing.

The best SharePoint solution results occur when the customization points are kept in line with the core things SharePoint does well, such as workflow, collaboration, search, content management and publishing, and document management.

Whenever possible I recommend limiting SharePoint customization to things that can be done via the browser or through modifying XML or XSL properties (for instance for Search Results web parts). This also helps to protect the solution from service packs and future versions of SharePoint as any customizations are likely to be minor and easily tracked (and upgraded).

When new requirements come in, it's helpful to have the entire team of SharePoint developers compare notes on what the platform allows and how it can be customized. It's noteworthy how many times a 30-minute requirements-gathering discussion can end up with a shared agreement on how the out-of-the-box SharePoint components can be combined to deliver something that at first blush seemed to require half a dozen custom web parts.

The fact that so much can be done with so little effort actually makes SharePoint a killer development platform - the trick is to use a bit of imagination to align as much as possible to what SharePoint provides and go with the SharePoint flow. If SharePoint development is difficult and painful it's probably time to reassess the proposed solution to see if there's a more elegant, SharePoint-centric approach.

Anyway, there's a lot of fascinating insight being posted on Jeffrey's blog and anyone who hopes to develop on the SharePoint platform should at least give it a look. The full discussion thread is here. 

Monday, October 29, 2007

Don't Panic! The MOSS Market Opportunity

Microsoft Office SharePoint Server 2007 was released nearly a year ago now, and over the last few months I've started to hear people in the industry say things like "there is a 6-month window of opportunity for us to become leaders in SharePoint adoption!" or "the SharePoint wave is starting to crest and we need to ride it!". I find this attitude a bit puzzling.

It might arise because MOSS 2007 looks like any other packaged software product: you can double-click the .exe file and point and click your way to a portal that seems powerful and flexible enough to keep your end users happy. If someone thinks of it as just a product, it's easy for them to imagine that their competitors are scouring all the finite nooks and crannies of its feature-set and will corner the market "mindshare" on SharePoint work if they don't get there first. Hence the perceived urgency of early innovation.

However the real power of SharePoint is not as a packaged product, but as a platform. SharePoint-as-a-platform is the reason there won't be a cresting wave of adoption, but rather a rising tide that will lift all boats.

What makes the SharePoint platform most interesting, apart from its infinite scaling potential, is that the problems it addresses are enterprise problems. By this I mean the solution focus is on "30,000-ft level" concerns such as knowledge sharing, federated search, document and records management, team collaboration, and Line-of-Business application integration.

If you need a website, blog, or application built, then a thousand different software products or technologies could fit the bill. If you want any or all of those things plus a technology stack that abstracts away most low-level "plumbing issues" and allows you to address your enterprise problems, then the list of software you can standardize on becomes very small indeed.

The SharePoint platform is huge, and is only becoming more so, as Microsoft and third parties build upon it as quickly as they can. As one example, take a look at any of Microsoft's product line roadmaps, and see how many will be rerouted from standalone applications into SharePoint integration points and modules within the next few years. Over the short- to medium-term the platform will only become bigger and more complex, and the value-add potential will grow correspondingly.

There are an infinite number of ways a contractor or company can add value to a SharePoint deployment. Just to name a few:

  • Document and Records management solutions
  • Capacity, Performance planning and Disaster Recovery planning
  • Portal branding and Look-and-Feel work
  • Custom web part or feature development
  • Custom workflows and electronic forms
  • High-end consulting around building and maintaining a portal
  • Portal migration and maintenance processes and tools
  • Training for end users, administrators and developers
  • LOB application integration
  • Business reporting tools

Any one of these solution areas presents vast market opportunities in its own right. Each is also challenging and complicated because delving into it requires an equal-parts blend of domain expertise and an understanding of complex technologies. The enterprise issues that are raised require deep thought and effort to grapple with. Of course there is no requirement to concentrate on just one area, and therefore by working across these areas there is an unlimited number of potential combinations of SharePoint services and products.

Because no individual or organization can provide all of the pieces for a successful deployment, everyone is forced to share opportunities to some extent and can even choose to integrate some of their competitor's offerings without risking their profits or market mindshare.

I therefore believe that one of the consequences of competing on a platform rather than on a product is the creation of a surprisingly cooperative ecosystem. An economist would call this a virtuous cycle.

This is why I'm not worried about artificial "first mover" timelines in the SharePoint arena. Instead I foresee a long, upward trend of community growth as more and more SharePoint adoptions occur and the tools and knowledge to manage them increase.

So if you're worried about missing the SharePoint ride, just follow the Hitchhiker's advice, and "Don't Panic!"

Thursday, October 25, 2007

OneNote and SharePoint: Better Together!

OneNote 2007 is great for note-taking. My colleagues and I have been using it for the last little while and we love it. There's always something new to learn about it.

After many months of using it individually, we decided to start sharing our OneNote notebooks with each other. Here's the cool bit: the notebooks can back onto a WSS 3 or MOSS library.

If you create a new document library somewhere on your SharePoint portal, you can choose a OneNote Section as the document template rather than the default Word template (although any library document template will apparently work just fine).

Now if you go back into OneNote, you can choose to share a notebook and host it in the document library you just built. It's easy to do; just click "Share" on the top menu and then "Create Shared Notebook". Give it a title and pick a template (we use "Shared Notebook - Reference Materials" or "Shared Notebook - Group Project").

Then when it asks "Who will use this notebook", just click "Multiple people will share this notebook" and choose to share it on a server.You will be asked to confirm the location: paste the URL of your site into the path textbox and then you can browse to the OneNote document library. 

Once created, you'll find a new folder in the SharePoint document library with the title of the notebook. Inside the folder there are OneNote files, one for each section (OneNote pages and subpages aren't actually individual "files").

You can invite people to the site just by giving them the library URL. Clicking on the OneNote notebook file will download a cached copy of it and open it in their OneNote client on their desktop.

We had a lot of fun adding content and pages, and watching as the clients synchronized changes first to the master files in SharePoint, and then down to each others' desktops. It's a very seamless process.

OneNote is very effective at synchronizing changes, although it doesn't use Groove apparently (Groove does file-based synchronization while OneNote seems to do more in the nature of content merging). 

You can view the standard Document Management panel in OneNote by clicking "Tools" and then "Document Management", which will allow you to view the site membership, see what's been updated, and set alerts if you want to keep on top of changes.

In order to search the OneNote content in MOSS 2007, you'll have to install OneNote 2007 on the Index server to get the OneNote 2007 iFilter, and then add the .one filetype to the Shared Service Provider's search settings. Instructions on how to do that are here.

This OneNote-SharePoin t combo is like a team Knowledge Base on steroids: fully searchable, disconnected, synchronizing, shareable, and with all the rich SharePoint functionality of any other library. Yet another example of the power of client software leveraging SharePoint's rich repository services!