Monday, April 13, 2009

Griffon Solutions - Startup Diary

About four years ago my partner Marie-Claude and I started developing some custom ASP.NET websites for small businesses.

The company name - Griffon Solutions - comes from a lovely little village in the Gaspesie region of Eastern Quebec called l'Anse-au-Griffon.

down to gaspe 270

What began as a part-time effort on evenings and weekends slowly started to get a little more organized over time. Two years ago, before we moved to Australia, we registered the company in Quebec.

Our reason for coming back from the Lucky Country last year was to focus more on this company, with the eventual goal of having a fun and challenging full-time web solutions business (software and consulting services) that we could run from anywhere.

We'd love to have an "open source business" - not just by writing Open Source software but by transparently sharing what we're up to, and how we're going about it, and learning as much as possible from the web community as we go.

Website Redesign

We’ve just launched a redesign of our website, www.griffonsolutions.com. We had a couple of pages online before, but the site was put together very very quickly as a placeholder, and needed a lot more love. In fact I’ve always been reluctant to publicize it :) As the old saying goes, “the cobbler’s children run barefoot”, and we never made the time to fix up the site, until now.

As a result of this SharePoint blog, I was contacted by Mario Hernandez, at Designs Drive. Mario has been looking into SharePoint and wanted to know a bit more about the LDAP integration I’ve written about. After a few email conversations he was kind enough to volunteer some of his time to help us redesign our website.

Marie-Claude and I picked a graphic design template we were happy with, and then Mario worked hard to make sure it was transformed into valid Xhtml and CSS. We all felt it was important to adhere to web standards and avoid table layouts if at all possible. We’re very happy with the end result.

Thanks so much, Mario, for contributing your time and your knowledge to us!

I think this is an interesting trend, especially in tough economic times…Here we have a couple of guys working in Los Angeles and Quebec who have never met, trading their IT skills and time to each other online. I know we’re not the first ever to do this, but it shows how small the world is, and how many opportunities there are for people to collaborate and work together.

The Framework

Incidentally, our new website is built on a custom .NET web application framework I’ve been working on constantly for the last 5 years.

The framework has been very much a labour of love. Sometimes it has been very frustrating and dispiriting, while at (most) other times the work has been fascinating, challenging, and deeply educational.

I’m finishing up the architecture on it and aiming to release it this Autumn as supported Open Source (probably Apache 2). This means that other people can use it (even in proprietary software).

In plain English, the platform has two goals:

  1. Provide a foundation of Enterprise-level capabilities to any .NET application.
  2. Integrate with popular software, databases, and web services in a simple, stable, secure, and flexible way 

It is standards-based and fully multilingual right out of the box. It uses NHibernate so it can support most databases without any modification.

From a technical perspective I’m still nailing down the shipping features, but currently it includes all of the following:

  • C# 3.0 / .NET 3.5 Framework
  • Generic business Entities to model common web software concepts such as users, websites, documents, and web pages. These are implemented via interfaces so you should be able to integrate them with your existing code without much modification
  • Common metadata and provider information for all Entities, such as Creator, Date Last Modified, and Data Source
  • Basic LINQ querying for all Entities
  • Entities can be exposed via a variety of formats including JSON and XML, or through web services (such as REST and SOAP) or web feeds (RSS and Atom)
  • Full multilingualism down to the level of an individual piece of data
  • N-tier codebase, using object oriented best practices
  • NHibernate database-agnostic data storage
  • log4Net for robust logging
  • Application Integration layer to make it easier to consume and provide information from a wide variety of services, software, and other sources (such as RSS and Atom feeds)
  • OAuth authentication for authenticating to web services such as YouTube or Google
  • Some strongly typed web service managers and web controls to make it easy to use popular services like LinkedIn, Yahoo FireEagle, and Google
  • Strongly-typed, standardized file access to a variety of file storage sources including Amazon S3, Http web servers, FTP servers, and Windows file systems
  • Uses the .NET Provider Model (especially for Roles and Membership)
  • Presentation layer with prebuilt base controls, pages, and master pages, as well as some server controls
  • Includes basic website project with Robots.txt, Master Pages, sitemap, XRDS file, and Admin area to make it easy to start up and manage a new website

I’ve been using various versions of this framework in production since 2003 / 2004 so it is tested and stable (my current internal release number is 2.7), but it’s nowhere near where I eventually hope it can be, which is why I’m hoping to build a thriving community around it.

Right now I’m in talks with a group that wants to evaluate using it to integrate their software with a popular web messenging service. If you too would like to evaluate the framework around the Q3/ Q4 period, drop me an email (address below) and we can have a chat.

I’ll provide more updates on this framework during the summer, as it nears RTM.

The Future

Obviously there’s a lot going on. In the future, this blog will speak not just about SharePoint and related technologies, but about business and technology issues in general. I hope to learn as much as I share, and I hope above all that the blog remains interesting and that you enjoy reading it :)

Cheers,

Nick

P.S. You can always email me at nick@griffonsolutions.com

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.

Sunday, March 29, 2009

The Code Factory - A Hangout for Ottawa Startups

I’ve started renting shared workspace at the Code Factory, a “collaborative co-working space” at 246 Queen street in downtown Ottawa. I’ve purchased about 40 hours of time so far. I can use meeting rooms, internet, coffee machines, lending libraries, and even some entertainment in the form of a foosball table and a Wii.

 P1010484 P1010480 P1010481 P1010482 P1010483

The owner, Ian Graham, calls himself a “Management Consultant and Entrepreneurial Catalyst”. He’s very enthusiastic about the startup scene in Ottawa, and definitely wants to help act an incubator and organizer of it.

It’s a neat place to hang out and meet entrepreneurs. There’s at once an informal and exciting vibe, and every time I’ve been there I’m come back amped up. Although I mostly work out of a home office it’s worth it to rent a bit of space because I like the chance to meet people, and I’m learning a lot about what’s going on in Ottawa and especially in the startup community.

It’s great to see such a place in Ottawa, which has tons of IT knowledge and has done for many decades…The Ottawa high tech scene actually has some very deep roots, due to the presence of government research and development agencies, a highly educated workforce, a strong telecommunications sector, and (more recently) some major hardware and software firms such as Nortel, Cognos, and Corel, which generated a lot of spinoffs. To prove the point, there’s a neat family tree on the wall showing the genesis of Ottawa-Gatineau startups and their sources (government, research, telecom, and so on).


View Larger Map

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 :)

Wednesday, February 25, 2009

I'm All Twitterpated

I'm late to the party, but based on the advice of many of the folks at the SharePoint Best Practices Conference I've signed up to Twitter - and boy is it fun!

It took me a while to understand it, because it's a variety of different things rolled into one. It's a micro-blogging platform, meaning it's easy to write little posts or "tweets" in 140 characters or less. It's a subscription service like an RSS feed, where you can listen to people talking about a particular topic. It's also a great way to get support - companies often search on twitter now and respond to questions and support issues.

Case in point: I'm still researching hosted Exchange email, so yesterday I started the usual Google search to find reviews etc...but then had the happy thought of asking Twitter people about it. By asking a question and putting the keyword #exchange in it, my question appeared to anyone following that keyword. Soon suggestions and advice were flowing in.

As well, companies that host Exchange starting contacting me and making suggestions. So it's a kind of active-passive channel to get quick information from people in the know.

Then there's the fun side of it - following people in all walks of life, listening to them talk about their favourite tv shows, trips, obsessions - there's a lot of weird and wonderful stuff out there. It's a real slice of life!

Right now I'm following a variety of SharePoint folks but also people interested in things like Exchange, NHibernate, and programming best practices.

I'm also following some friends and colleagues, and even the great British actor Stephen Fry, who is one of the most popular twitterers in the world with over 100,000 followers (people who subscribe to his tweets). His latest tweets describe him whale-watching, drinking Tequila, and riding a mule up a mountain for some movie he's filming (not at the same time).

To get started, all you have to do is create a profile on twitter.com. To make it easier to twitter I am using a desktop client. This helps with searching, following people, and tracking through the long lists of tweets. The one I chose is Twhirl which is an Adobe AIR application that sits in my task pane window and alerts me the moment a new tweet comes in.

A good thing to do is check out Twitter tips and tricks on the web. ReadWriteWeb has a lot of great information on twitter usage, applications, and tips - here's a link to their twitter articles. Also Joel Oleson has some SharePoint + Twitter tips on his blog.

You can follow me on twitter at @NickKellett or at www.twitter.com/NickKellett.

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?

Tuesday, February 17, 2009

Above the Clouds: A Berkeley View of Cloud Computing

The Electrical Engineering and Computer Sciences department at the University of California at Berkeley just put out a research paper on Cloud Computing as they see it.

The paper is an in-depth exploration of what some consider to be just another buzzword, Cloud Computing. Since nobody has agreed on what exactly it means, the implication is that it's just a marketing term.

I remember when web services started to appear, around 2000/2001 if I recall correctly. The descriptions and possibilities seemed great, but nobody really knew what to do with them or why. So there came a time when nobody talked about web services anymore and it looked like that particular bubble had burst.

In fact, behind the scenes, a host of companies and individuals were figuring web services out, building their own, and releasing them. A couple of years after the term started popping up, web services arrived for real and now we have mashups and SaaS and Software + Services and some really well-traveled XML fragments zipping around the globe.

The same thing seems to be going on with Cloud Computing. We're in the early days, and still hearing the "Moon on a stick" promises that Cloud Computing is a silver bullet for everything.

This white paper is one of the first I've seen that really quantifies the (potential) cost savings of Cloud Computing.

Some gems:

  • Explanations on Cloud Computing and how it differs from previous attempts;
  • Classes of Utility Computing on page 10, comparing Google AppEngine, Amazon Web Services, and Microsoft's beta Azure platform;
  • Cloud Computing economic models, on page 12;
  • A discussion of the Top 10 challenges- and potential solutions to them - on page 16;
  • The observation that FedExing your data is a good way to cut down on your bandwidth costs and delays.

This is very impressive work. The full paper is here:

http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf

Monday, February 09, 2009

SharePoint Best Practices - Another Great Year

P1010386

P1010434

We enjoyed another great year of Mindsharp's SharePoint Best Practices Conference in San Diego. Thanks to Mark Elgersma, Ben Curry, and Bill English as the chief organizers, although I know there are lots of other Mindsharp folks who worked hard to pull this off.

UPDATE: Just heard back from Ben - the primary conference organizers were Bill English, Paul Stork, Paul Schaeflein, Todd Bleeker, Steve Buchannan, Pamela James, Brian Alderman, Ben Curry, and Mark Elgersma. Thanks again guys!

Given the grim economy it was noticeable how many people showed up - over 350 attendees I believe in addition to all the vendors and organizers.

I attended with echoTechnology's Director of Sales, Sean O'Reilly. He's a real hoot - a bit of a legend on the conference circuit. We arrived on the Sunday. Since Sean and I are now using demo laptops and have the exhibit booth process nailed down after numerous conferences, it only took us about 15 minutes to setup the booth before we could unwind.

P1010402

That night the BPC kicked off unofficially with a Super Bowl party in Ben Curry's suite. It was great to watch the game with various attendees and exhibitors.

Joel Oleson gave a funny keynote on Monday morning, talking about the 10 steps to success.  He argued that SharePoint is plastic and so just because you can do something with it, doesn't mean you should. Some of his analogies included Robot Barbie and headless chickens. Also there was a disapproving mother ("IT") and finger-painting baby who got paint all over the wall ("the business").

One quote he mentioned from Gartner says that by 2010 less than 35% of WSS sites will put effective governance in place!

Programming Best Practices

In between exhibit hours and meetings, I was able to attend only one seminar, given by Francis Cheung of Microsoft's Patterns and Practices Group. This was a really neat explanation of best practices for programming against SharePoint.

What was interesting was Francis showed how object oriented patterns like the Repository pattern could be used to abstract out SharePoint-specific resources like list names, loggers, and so on. Francis also pointed out the need to create strongly typed business entities for SharePoint, rather than straight calls against SP objects.

This provides an additional layer of abstraction that allows mocking and unit testing. The idea is that for code testing purposes you should be able to swap in mock interfaces without relying on SharePoint being available. For instance you should be able to run unit tests against SharePoint code without the SQL database even being available.

These entities also make it easier to work with presenters/controllers without worrying about looking up Site or List GUIDs, or provide an easy way to do CRUD operations.

Microsoft currently has a patterns and practices guidance available at www.microsoft.com/spg. From the guidance doc:

This guidance discusses the following:

  • Architectural decisions about patterns, feature factoring, and packaging.
  • Design tradeoffs for common decisions many developers encounter, such as when to use SharePoint lists or a database to store information.
  • Implementation examples that are demonstrated in the Training Management application and in the QuickStarts.
  • How to design for testability, create unit tests, and run continuous integration.
  • How to set up different environments including the development, build, test, staging, and production environments.
  • How to manage the application life cycle through development, test, deployment, and upgrading.
  • Team-based intranet application development.

This approach is actually a standard approach to custom code development but SharePoint has tended to blur the lines a little bit. What is very interesting is that more and more of the BPC seminars were about programming and unit testing. People were even talking about Test Driven Development (TDD) against SharePoint!

What this indicates is that organizations are starting to treat SharePoint seriously as a development platform. This has always held potential but required a steep learning curve. For example, at the Best Practices Conference last year there was very little on these sorts of developer-centric practices. This year it was all about programming against SharePoint in the traditional way - using unit tests, mocking, web smoke tests, and OO patterns.

There hasn't been a killer app for SharePoint yet but it's coming.

Best Practices For Centrally Governing Your Portal and Governance

On Wednesday morning I gave a presentation on helpful tips for centrally managing a portal. I showed a governance site collection I have been working on and talked about how it can be used to make it intuitive and easy to run a portal.

I'm including my powerpoint presentation here.

There are no screenshots of the governance site collection yet although I am uploading a couple as part of this post.

Governance Site Home Page

Governance Site Taxonomy 

Hope this helps!

Saturday, January 31, 2009

SharePoint Best Practices Conference 2009

Tomorrow I'm heading off to San Diego for the Best Practices Conference. I thought the last one was fantastic and I hope this will be just as good.

Last year's BPC had a great mix of people with all kinds of good tips and advice on SharePoint, ranging from really in-depth IT operations-style tricks to more end-user focused adoption and support techniques. There was a real buzz of enthusiasm for SharePoint that you don't often see at conferences.

This year Joel Oleson will be making the keynote and I'm looking forward to hearing his speech. As well, there are over 40 speakers (including many MVPs), 27 sponsors, and hundreds of attendees.

Last year I presented some ideas on how to centrally manage metadata in a farm. Once again I'll have a chance to speak on a similar topic. This time my presentation is called "Best Practices For Centrally Governing Your Portal and Taxonomy" - pretty straightforward title I know :) It'll expand on last year's work - I've got a demonstration of an actual governance site collection and ideas on how to manage things centrally including key SharePoint items like content types and lookup lists. I'll post the slides in various places after the event.

On a side note, I've been on the road a lot recently and my blog postings have been less frequent. With a bit of luck I'll be able to attend some sessions and blog on the speakers this week. Either way I hope to have some more "meaty" SharePoint posts in the near future. I don't want this blog to look like a travel diary!

Thanks for reading as always,

Nick

Saturday, January 17, 2009

Hello, New York!

Next week I'll be exhibiting echoTechnology's latest version of echo for SharePoint in New York City, at the SharePoint IMAGINE 2009 conference.

The conference is billed as "SharePoint in the Real World". Its focus is on how businesses use SharePoint to solve their specific real world needs, and how SharePoint impacts their bottom line.

It's organized by Impact Management and is taking place at the Microsoft NY Center at 1290 Avenue of the Americas on Wednesday Jan 21 from 9 to 4. Attendance is free so if you are in the area you should definitely sign up...you can do that here.

I'll be in NYC from Tuesday evening to Thursday afternoon, attending the conference and meeting with a variety of echoTechnology partners - so my itinerary is very tight. Still, it's a great opportunity to return to NYC, where I lived for a short while.

Good Times...

I moved home right after the awful 9/11 and the Dot Com bubble burst, and this is my first chance to go back. Although I was only living in New York for a year, it left an indelible impression on me - as it would on anyone.

My first professional programming job was in 2000/2001 as a Java programmer. I took New Jersey-based IT training company SetFocus' intense but great 3-month Java Master Track, and was then placed with an online education company in New York City.

We were developing a web-based learning system using JSP and servlets, in a cramped little office downtown on the corner of Church and Warren.

At first I lived in West Orange New Jersey with a small gang of roommates, and then we all moved to a small building in Astoria Queens. This was inhabited by a porn star, an aspiring model, an unkillable cockroach (we learned to live and let live), and a foul-mouthed talking parrot named Sammy (not necessarily in the same apartment).

Some of my favourite memories are: exploring the parks and trails on the edge of Battery Park City; bar crawling with my roommates and friends; celebrity spotting; conniving my way into an amazing hidden club called Light, marked only by bouncers and a lit white window and way too cool for me; eating lunches on the steps of Federal Hall in Wall Street and exploring Manhattan on foot during lunch hours; and wandering the streets of Brooklyn Heights.

...Followed By Taxes

Living there was also an exercise in paperwork. Due to my particular circumstances I paid 7 levels of taxes at various times that year:

  1. New Jersey state income tax
  2. New York state income tax
  3. Connecticut state income tax
  4. New York city sales tax (anytime I bought something)
  5. US Federal income tax
  6. Canadian Federal income tax (although I was out of country, as a Canadian even death can't cut short your obligation to pay taxes); and
  7. Ontario provincial income tax

To this day the state of Connecticut faithfully sends me an annual update on my pension plan, which currently sits at 13 cents a year. I'm sure just mailing me costs more than that! Luckily they report that they are investing great time and attention to increase the yield, so when I retire in 30 years, my pension will be at 14 cents and I can finally buy that tropical island.

Anyway, if you're in the area and want to say hi, drop me a line!

Saturday, November 08, 2008

DevConnections in Las Vegas Next Week

I'll be in Las Vegas this week for the DevConnections / SharePoint Connections conference from Monday to Thursday, hosted at the Mandalay Bay resort and casino.

echoTechnology will have a booth set up so if you're around drop by the booth and please say hello!

As always I'll try to attend as many of the sessions as I can and blog about anything that might be helpful. And try to not to blow all my money on blackjack...

Speaking of events, and on a somewhat unrelated note, LinkedIn has started releasing 3rd party applications on its platform. At the moment there are eight apps including

  1. Box.net - to store and share files
  2. BlogLink - by SixApart, showing your blog posting and sharing your contact's
  3. Slideshare Presentations and Google Presentations - to showcase and share powerpoint slides
  4. Reading List by Amazon - to share your reading list with your contacts.
  5. My Travel - a neat app to share the events you'll be attending

Similar to the My Travel application, LinkedIn also added Events, which is a searchable directory of industry events, and the reason I'm mentioning LinkedIn in this post. DevConnections is listed and I've signed up as attending.

I love LinkedIn, and I'm glad they're improving their offering with utilities that genuinely add value and make the network seem more useful and personal. You can get a much better sense of who your connections are when you see their blog posts and share trip itineraries.

Tuesday, October 28, 2008

SharePoint Governance Site Advice

While preparing for my SharePoint Best Practices Conference presentation on centralized taxonomy, I made a sample governance site to help with my demonstrations. Afterwards I received feedback from people asking for concrete examples on how to do this. So here goes:

Steps to Creating the Governance Site

I'm calling this the Governance Site because it's less confusing for the end users, but in SharePoint terms it's really a site collection. Here are some suggestions on how to set it up:

1. Use a dedicated site collection. By making a dedicated site collection you retain maximum flexibility. You can lock down the site collection security for sensitive governance documentation or make most content publicly available. You can deploy custom content types, site templates, and list templates, as well as manage features separately from the rest of your portal. You can manage Information Management policies and retention policies more easily. You also retain the ability to move the governance portal to other content databases, and can make complete backups of all your governance content.

2. Create a new managed path for the governance site in Central Administration. Under Managed Paths, create an explicit inclusion for the keyword "Governance".

2. Now create the governance site collection. With the Managed Path you just created, users will probably navigate to it using the URL http://[your portal address]/governance . The Site Template that you will probably use when creating this site collection is either the Blank Template,  the Team Template, the Document Center, or (probably best of all) the Collaborative Portal - because this will give you news and a site directory right out of the box.

3. Add a new global navigation link on your governance portal, pointing to the home portal. This allows your users to navigate back to the home portal from the governance site collection.

4. Add a new global navigation link on your home portal, pointing to the new governance site. This allows your users to navigate to the governance site right from the home portal.

Sydney - Governance Link

5. Ensure your Shared Service Provider search settings will crawl the governance site collection, although this should be happening by default.

6. Modify the governance site collection to suit your business. See below for tips on what to include / layout.

7. Keep your content types, custom site columns, workflows, Master Pages, and other SharePoint resources in this governance site. Centralizing them here effectively means they become your "Gold Standard" for any portal modifications. Your administrators should refer to them when making changes elsewhere. Your challenge is to ensure that work done elsewhere is consistent with the governance site.

Governance Site Layout

I'm including screenshots of the work I did. This is intended to help as a guideline.

The Home Page

Obviously this first page has to make it crystal clear to users what the governance site is for, and how to use it.

News and Announcements are important to indicate progress on the portal. A little introduction by way of a content editor web part would be useful to. Whatever you do, make sure this stuff is up-to-date - if you don't keep the governance site content fresh and useful, users will wonder what hope there is for the real portal.

I suggest putting a Roadmap on the front of it to show them where SharePoint has come from and where it is going in your organization. That way they understand this is a process and successes have already been achieved.

I like Roadmaps because people get very excited about the SharePoint possibilities. Having a Roadmap allows the governance team to take requests and good ideas from the business, organize them into little projects, and slot them into a proposed timeline. This encourages the business to see the SharePoint portal as an evolving, enabling process that they are involved in. It also acknowledges the reality of limited technical resources, time, and budget, and the need to make hard decisions about what will be done, and when. Best of all, it's quite transparent!

Governance Site Home Page

This road map is simply a Project Tasks List called "Portal roadmap", created on the root of the site collection. Then I added the task list as a web part in Gantt view.

Subsites

I would suggest including at least 5 subsites. These are:

1. Communication

2. Policies and Procedures

3. Support

4. Training

5. Taxonomy

These are the five main things your governance team will probably be working with. You can use any template you like, although in this case I used Team Sites. The Fantastic 40 might be useful for some of these sites - especially the Support or Training sites.

Communication

The Communication site is simply a central place to spread the word about the SharePoint portal. It could be very top-down, push communication via news items or updated content. More collaborative communication would probably involve wikis, blogs, or discussion threads. If you have an existing communication process or software you could link to it from here. Tying the SharePoint portal into your existing processes and content is an important way to make SharePoint seem less threatening, more empowering, and more inevitable :)

Not shown here is a feedback mechanism. This could be a discussion thread or embedded poll that asks users to comment on the governance site and suggest ways to improve it.

Policies and Procedures

The Policies and Procedures could be a Document Center. It is simply a central place for users to find all governance documents. You should store them here and then link to them from all the other sites, using the Link To A Document content type that is available from SharePoint out of the box. This will cut down on redundancy.

Support

The Support site should have a support matrix, showing users what levels of support are available for various sites, applications, and problems. This could range from self-help to IT support. There should be contact information for help desks and IT staff if available.

This is a good place to store videos and cheat sheets for users to help themselves. SharePoint add-ons such as the SharePoint Learning Kit could go well here. Effort place here will cut down dramatically on support costs!

Training

Training could also use the SharePoint Learning Kit, and could be a good place to identify what courses are available (internally and externally) and request training. I worked with a financial client who would not let users onto the SharePoint portal until they'd passed a small online course. Each manager had a KPI and was responsible for ensuring their staff took the course, passed it, and followed its teachings when using the portal. This helped lower support costs, the staff were very satisfied with the portal, and they used it more.

Taxonomy

The Taxonomy site is a place to document the metadata and site structure you will be using to organize the home portal. This site will be more technical but is an important resource for your administrators, developers, and content authors.

Document your content types and site columns, when and where they should be used, and explain how SharePoint uses them (advanced search, property searches, content query web parts).

If you have an organization Thesaurus, document or link to it here.

This is what it could look like:

Governance Site Taxonomy 

Governance Site Functionality

There's a lot of native SharePoint functionality that you might wish to use on your governance site collection.

Auditing on the site collection: You may want to know who is looking at what.

Workflow: The Governance site is an excellent candidate for light-weight Out-of-Box or custom workflow. Workflow can help triage support and training requests, and handle publishing approval for governance policies and procedures.

Search Scopes and Best Bets: If ever there was a place to serve up highly targeted search results, the governance site is it!

Search use metrics. You have to turn this on in your Shared Service Provider(s). Pay very close attention to what people are searching for and finding (or not finding) on the governance site and use this to modify your governance approach.

Audience Targeting: Consider audience targeting content on the governance site to prevent information overload. Broadly speaking your governance site audiences might include:

1) Governance Team members

2) IT Operations, Farm Administrators and /or Site Collection Administrators

4) Site Owners (Probably business owners and power users)

5) Content Authors and Champions

6) Everyone Else

Key Performance Indicators - if you have the Enterprise license of MOSS then Key Performance Indicator functionality can be useful to give people a heads up of roughly how portal adoption is going. One thing you can do is create a custom list with some tracking metrics and then put a KPI on that list. You can update the list manually each week to show the latest usage trends.

Metrics are very important as they can indicate whether your governance effort is leading to success.

Information Management Policies - especially if you are applying records management practices to the governance content.

A Starting Point

I really hope that helps. If you do create a governance site, try to keep it up-to-date and make it the central place for people to visit. I would love to hear your comments on what you did, what works for you, what tips you have and what add-ons you found to help you manage your SharePoint portals.

Good luck in your governance efforts - it will definitely be time well spent!

P.S.: Sorry this post is a couple of weeks late, Julie :)

Saturday, October 04, 2008

Amazon EC2 To Support Windows OS

Great news from the folks at Amazon Web Services - their EC2 Cloud computing platform will shortly support Windows operating systems. This is a wonderful development as it will allow .NET applications to be hosted with IIS at the same level of scalability as the Linux folks now enjoy. I've signed up so when the first beta comes out, I have a fighting chance to test it.

Pricing will be higher for Windows OS than for Linux of course but with the advances in virtualization these days I doubt it will be a huge difference. Of course what you are paying for is the extra services of (presumably) professional backup, redundant servers, locked down security, onsite engineers, and all the bells and whistles a massive data centre run by one of the world's largest e-tailers will provide.

I'm a keen fan of Amazon's work - I think of all the major players they are the ones who understand the new economics of the internet the best - yes even better than Google I would argue. They are commoditizing application development in a granular and sustainable way.

Of course Google's revenue stream is huge. Of course they have made major successes by providing services such as online office apps, email, maps, analytics, adsense and adwords, but at the end of the day their revenue is entirely search-based and it isn't clear what level of support  any of these additional services are likely to receive over time. Right now it doesn't matter that all of these services are "free" and "Beta", because they are intended to fuel Google's search revenue. However, that assumes that Google will remain the #1 search destination. If it doesn't, all of these services will have to be dropped or given some kind of business model. In my opinion, anyone building on these services is therefore taking a bit of a chance.

At the bottom of any software ecosystem, the founder is essentially bullet-proof. That's because anybody using the platform faces the switching cost to another ecosystem, and also because the more services are offered, the more compelling staying on the platform becomes.

What Amazon is quietly doing is encouraging everyone to build on their platform, but charging them for this. By doing so, they are making a sort of business guarantee - they get a revenue stream for each of their services, and in turn they can support it with Service Level Agreements and dedicated teams. In other words, there is a vision and a road map because Amazon's web services each raise money.

Recent improvements to Amazon's DevPay - which provides an easy way for developers to charge for their software - and their work on the super-scalable SimpleDB are proof that they are in this for the long haul.

At the end of the day, developing on any cloud computing platform  isn't just a technical challenge. It raises a lot of thorny questions - how do you protect your data, what kind of legal issues accrue, what are the privacy issues, how do you handle service level agreements, how do you pass on your costs - just to name a few. Cloud computing is not a silver bullet and anybody committing to it needs to take a deep breath before they do, and research and plan ahead.

However, the commoditization of computing resources represents the same impact as the introduction of the telephone line or automobile factory - after awhile you forget they are there and just RELY on them. Seen this way, a future timeline of technological progress might include the names, "Thomas Edison", "Henry Ford", and..."Jeff Bezos".

What do you think?

Tuesday, September 23, 2008

SharePoint Best Practices Conference: Keynote Speech by Tom Rizzo

Tom Rizzo, Microsoft's Director of SharePoint, kicked off the SharePoint Best Practices conference with a funny and insightful keynote speech. He provided a view into SharePoint's current and future development, and reminded us of the various releases and support that are currently available for the platform.

Past, Present, and Future

Tom talked about SharePoint's humble origins in the Tahoe days, when it was teamed with Exchange. Now it's one of Microsoft's fastest growing server products ever. He joked that they are still trying to come up with a three-word description of it, given that as a platform and product it is  "floor wax and dessert topping at the same time".

He also touched on the future of SharePoint. Key directions for the next version will include investing in the "mobile experience", making the phone "a key client for SharePoint moving forward".

Another major investment is already occurring in the area of online hosting. Microsoft is trying to leverage its online SharePoint hosting experience, which I've blogged about before, and make it easier in the next version for clients to decide between on-premises and dedicated or multi-tenanted hosting in the cloud.

He described how SharePoint currently relates to the x2008 versions of Microsoft's products. SP1 with slipstream install allows SharePoint to work on Windows Server 2008. It provides security enhancements (like a reduced attack surface by switching off non-critical services), performance gains, and full support for virtualization.

I'll mention that last point again - starting with SharePoint 2007 SP1 Microsoft now provides full support to SharePoint servers using VMWare! This is very important - every solution definition doc I ever wrote had to explain to clients that if anything went wrong with their VMWare SharePoint instances, Microsoft would only provide "best effort" support. This is very good news. Here's the official announcement.

SQL Server 2008 adds transparent data encryption if you want to completely lock down your data - even if someone gains access to your SharePoint database server, they can't get at your data without the encryption key. It also provides performance benefits, including a nifty little feature called File Streams that allow SQL to manage and "serve' large files (BLOBs) from a file system - basically a nice compromise between the advantages of file system storage vs database BLOB storage.

Finally, Visual Studio 2008 makes it much easier to build (and debug) Workflow Foundation workflows for SharePoint.

Tom's Top 10 Best Practices

  1. Capacity Planning isn't a suggestion! (Also, move to 64 bit because SharePoint vNext will be all 64bit)
  2. Know Thy User
  3. Know Thy Data
  4. Know Thy Developer  - use asynchronous calls, watch out for web part connector blocking, inefficient code, do lots of stress testing
  5. To thine own self be true  [Unfortunately I don't remember what he meant by this]
  6. Scale up or out > actually do both! Plan your architecture to keep these options open
  7. SharePoint is an Enterprise app - don't let the WYSIWYG and wizards fool you - this takes investment of time, people, and money
  8. Support boundaries protect you and us [meaning Microsoft] - only use OOB or make customizations knowing they may not be supported going forward
  9. Weeding and pruning makes a beautiful deployment - constantly manage your farm and its content
  10. We all love code but.... Out of Box is good!

Questions and Answers

Q: What is Microsoft's commitment to cross-browser rendering?

A: Tom mentioned enhanced Firefox and Opera support in SharePoint 2007, as well as decreased use of ActiveX controls. This trend will continue . Mentioned browser on mobile phones is an increased priority. Partnership with Telerik makes Rich Text Editor more accessible / cross browser.

Q: What about Dynamics CR support with MOSS, without using the BDC?

A: Dynamics CRM was released after SharePoint so SharePoint couldn't integrate fully with it [Although the reverse must have been possible?]. Going forward better coupling between Dynamics CRM and SharePoint vNext will occur.

Q: What about Accessibility Standards?

A: Improvements will be made in the product going forward. Tom cited the work with HiSoft on the Accessibility Kit as an example. [Personal comment - I don't believe this is going to ever be fully resolved as long as maximum UI "functionality" is a priority- case in point the increased use of Silverlight and Ajax will likely make this a non-starter. I believe this can only be achieved with an MVC-style architecture that would service multiple clients, and this will likely represent a massive rearchitecture which I doubt will happen. For the current state of play see my previous post on accessibility in SharePoint.]

Q: What's going to happen with the Knowledge Network add-on? [Which automatically provided enhanced skill and people information in SharePoint based on email conversations]?

A: We liked the Knowledge Network so much we want to include it as a core feature in SharePoint vNext.

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!

Friday, September 12, 2008

On The Road Again

I'm off to the SharePoint Best Practices Conference tomorrow, and can't wait. Specifically I am looking forward to:

  1. Speaking with a group of SharePoint adopters who I think will be very enthusiastic about the technology, and keen to share their knowledge and hard-won experiences
  2. Discussing best practices from lots of MVPs and presenters
  3. Visiting Washington (I've only been there once, about 16 years ago)
  4. Presenting on Wednesday - the topic is called "No More Metadata Migraines: Easily Manage Your Centralized Taxonomy" and I will discuss content migration, management, and metadata best practices, and then provide a short demonstration of echo for SharePoint

I don't know if other platforms have dedicated "Best Practices" conferences, but I'm sure glad there's one for SharePoint! I imagine the more open-ended a software platform is, the more important these kinds of freeform discussions become. Anybody know if Salesforce, IBM (for Websphere), Amazon, or Google do this kind of thing? Do they even need to?

Tuesday, September 02, 2008

Global Assembly Cache Trap Door

Sergio Otoya, the Technical Director of the Australian SharePoint consulting shop LivePoint, showed me a great little trick yesterday to open a "trap door" to explore the Global Assembly Cache (GAC). This is a special folder on the file system (at c:\windows\assembly)  where all the globally registered .NET DLLs reside.

Sergio pointed out that if you navigate to it using Windows File Explorer you can only see the registered DLL information.

GAC

However there is a little back door you can use to actually view the deployed DLLs. If you go to the Windows Start line and type c:\windows\assembly\gac  - it will open a new File Explorer window with the list of all the DLLs in a sort of folder view. So now copy and paste is enabled.

GAC - Behind The Scenes

Why is this useful? Well, in my particular case I was trying to copy a feature from one SharePoint portal server to another, and couldn't find the original WSP or Feature...So in order to manually recreate this I simply wanted to find the Feature (available from the SharePoint hive) and get my hands on the GAC-deployed DLL.

Not a very common use case, but a good trick to know.

Thursday, August 28, 2008

Next Stop, SharePoint Best Practices Conference!

Turns out I will be attending the SharePoint Best Practices Conference in Washington in a couple of weeks. echoTechnology is one of the Gold Sponsors, so I will be helping to man the booth.

Better yet, I get to do a 1-hour demo on how echo helps manage SharePoint using best practices. Details are still being worked out, but I'm hoping to demonstrate the Centralized Metadata best practices I've been working on.

So if you're at the conference and can spare an hour, please drop by to my presentation - Wednesday at  2:20 to 3:30. Even if you can't make it - you can stop by the booth any time and say hi!

Hope to see you there,

Nick

Friday, August 15, 2008

SharePoint World Record Dash!

In honour of the Beijing Olympic Games I thought I would create a new event, the SharePoint World Record Dash. The goal is to update a blank Team Site to include a whole new look, layout, and content, in the shortest possible time.

I'm using a preset echo for SharePoint batch to run the series of changes on one site, and Adobe Captivate to film the results - I awarded myself the broadcast rights :)

The changes are:

  1. Apply a new theme for the site (Obsidian)
  2. Remove the existing WSS Image Web Part
  3. Add an RSS Feed Viewer web part pointing to the BBC Sports news
  4. Add a custom link to the BBC website on the Links list
  5. Add a Content Editor web part with Wikipedia information

echo will use the SharePoint object model to make these changes, just as if I'd done them all by hand via the browser.

In this video I'm only updating one site but in my weekly webinars I show how easy it is to make identical changes in development, testing, production environments, on local or remote farms, and to multiple site collections and subsites.

Without further ado, here's the SharePoint World Record Dash video.

If you want to see the batches in more detail, feel free to sign up for one of our weekly webinars, every Thursday at 1 pm PST. You can sign up at http://www.echotechnology.com/registration/Events.aspx?PID=8&EVTID=1

Hope you like this!