30 December 2010

Year in Review

As we close out 2010, I wanted to reflect a bit on the past 12 months.

First and foremost, I want to thank all of our clients (new and existing) and our partners for a terrific year!  We have had the opportunity to work with some fantastic folks on a number of very cool projects.  We were fortunate to be involved in both SharePoint 2010 and 2007 projects, custom ASP.NET projects, work with our newest software partner EPiServer, continue our research work with the Real Story Group and spin up a fairly busy migration practice around Microsoft Business Productivity Online.  In fact, working on the variety of projects with a diverse set of partners and clients is one of the reasons consulting is such an interesting business.  For 2010, here is a sampling of the projects and firm types Consejo worked on and with:

In addition to client work, we also had the opportunity to speak at various events.  2010 was a busy year for conferences and we spoke at many events this year, including:

  • Hardlines Technology Forum in Schaumburg, IL
  • Midwest SharePoint 2010 Conference in Milwaukee, WI
  • SharePoint Summit 2010 in Montreal, Canada
  • Enterprise 2.0 in Santa Clara, CA
  • The J Boye Conference in Aarhus, Denmark
  • SharePoint Symposium in Washington, DC (co-located with KMWorld)

In all, our experiences with our clients, discussions with firms interviewed in our research and interactions with attendees at conferences have provided us with a wide-ranging 2010. 

I would like to close this post by personally thanking all of our consultants, our clients and our partners (including the conference organizers of the various events) for a wonderful year.  I wish you all a prosperous 2011 and look forward to continuing our work!

Happy new year!

28 October 2010

SharePoint Influencer50

Recently, Global360 and KnowledgeLake sponsored a study by Influencer50 to identify the 50 most influential folks in the SharePoint space.  If you follow SharePoint and the people who often blog, tweet or otherwise consult, you’ll know that trying to identify the 50 most “influential” individuals is no trivial task.   However, that’s exactly what the Influencer50 study aimed to accomplish.

When the study was released, I was slightly surprised to be see my name among the 50.  Though thrilled to be included with folks like Andrew Connell (Critical Path Training), Tony Byrne (Real Story Group), Tyson Hartman (Avanade) and Sue Hanley (Susan Hanley, LLC), the study got me thinking about what it means to be an influencer and how much weight to give to the study.

Rob Bogue was the first public critic of the SharePoint Influencer50 study that I’ve seen so far.  In his post, he makes his argument along a few dimensions:

  1. It’s challenging to measure influence
  2. Difficult to gauge how a potential buyer will react to any influence given the sheer number of variables involved
  3. Influence changes depending on the situation and, to point #2, there may be influencers that are “hidden”
  4. You can’t be an influencer if you aren’t directly involved in the space
  5. [Implied] Vendors sponsored the study (credibility issue)
  6. [Implied] The firm conducting the study is using a potentially unsubstantiated methodology

Some of Rob’s arguments are compelling.  I would wholeheartedly agree with items 1, 2 and 3.   As Rob points out, it’s difficult to “predict the weather,” due to the sheer number of variables involved.  The same is true of buying decisions; you just never know what factors are involved in getting someone to purchase software.  Further, the influencers for a given buying decision will change; in the SharePoint space, I’d rely on an infrastructure focused consultant for Farm configuration best practice more than I would someone like me who tends to be more focused on development.

That said, I’m not sure all criticisms he raises are valid.   I found the Amazon discussion regarding book sales a bit of a red herring; sales popularity does not imply fitness or validity.  I also disagree that someone like Jon Powell from Alfresco can’t be influential.  It doesn’t make sense that one would be influenced only by those folks who only support one position or another.  I think it’s reasonable that potential buyers listen to Mr. Powell as much as a SharePoint MVP; his criticisms are at least as telling as positive statements from SharePoint pundits.  Finally, while the study was sponsored by vendors, it shouldn’t be dismissed on that fact alone.  While Rob is critical of the Influencer50 list (and “top” lists in general), he is a part an “elite” list – the list of SharePoint MVPs; a fact he promotes on his blog.  Like the Influencer50, the SharePoint MVPs represent a group of individuals named by Microsoft and must fit a specific criteria.

Ultimately, any study or list should represent just a single data point in a collection of research.  SharePoint is a very broad product with lots of capabilities and it’s unlikely that any singular list, whitepaper or study could cover everything.  The SharePoint Influencer50 study is one way to discover potential sources of intelligence on SharePoint, but it’s not exclusive.  I’d recommend using a few sources of information and draw your own conclusions.

19 October 2010

The Wisdom of letting Users “Figure it Out”

Back in July of this year, Computerworld, Networkworld and CIO all ran an the article “Telecom Giant Takes to Web 2.0.”  It was about Alcatel-Lucent’s use of social media tools.   The article opens with a quote from Greg Lowe, Social Media Strategist and Global Infrastructure Architect.  Lowe stated that the CEO told the organization to be more “collaborative.”  What immediately struck me was the response: go buy/implement a technology.

Based entirely on Lowe’s title, it appears that he is a member of Alcatel-Lucent’s Information Technology group.  Unsurprisingly, it appears as if the first reaction to the CEO’s statement was to find a tool to “fix” the problem; based on the content of the article, it wasn’t clear exactly what the CEO meant and whether another tool would be a solution foundation.  However, the approach described was a typical pattern:

  1. Find a tool that seems to enable individuals to solve a problem
  2. Make the tool available
  3. Let the user community figure out how to make the organizational changes necessary to actually solve the problem

The trouble with this general approach is that it is often a recipe for disaster. 

Much to the credit of Alcatel-Lucent, they seem to be successful in at least getting folks to use the new tool.  What wasn’t immediately obvious, however, was whether the tool solved the problem the CEO identified.  To be blunt, does tool usage indicate the problem was solved or just that people were using the tool?  In using the tool, does it mean that quality collaboration, that fundamentally improved an individual’s ability to complete their job tasks, occurred regularly?

To CIO magazine’s credit, they did link to an article that presented a similar situation at Phillips, called “My Enterprise 2.0 Rollout: 4 Keys to Success.”  Fortunately, this article presented a far more thought out and methodical approach to using the “2.0” technologies.  The difference between the two approaches boiled down to the following (even identified as “keys to success”):

  1. Develop a good strategy
    Phillips spent time trying to understand what they wanted to accomplish – not just “we need to collaborate better.”  Specifically, what will truly make a difference in our business?  If a business can’t improve productivity, reduce expenses or improve revenue, why implement technology solutions at all?
  2. Lead by example
    At Phillips, the executives lead by example and leveraged the tools in their own work.  This approach provides a fantastic benchmark for the rest of the organization.  As the article points out, it’s not about an edict from above, but rather a way for the leaders in the firm to demonstrate usage and, in a way, also publicly learn from those lower in the organization.  Frankly, if an enterprise wants to make any initiative successful, employees need to understand that management supports their efforts and their work won’t be wasted.
  3. Work with the user community
    Unlike the Alcatel-Lucent example, Phillips actively worked with the user community to ensure success.  The work involved in and the problems solved by the tool aligned directly to challenges within the organization; there were clear metrics for success
  4. Allow a bit of “organic” evolution
    The article calls this concept “loosening the reins.”  Phillips didn’t explicitly create policies to govern the use of the tool.  While it’s generally a good idea to incorporate governance into the use of these kinds of tools, the idea of allowing a bit of usage flexibility is critical.  In many cases, there is insufficient data to truly understand what might or might not work in the enterprise.  Further, a certain trust needs to develop between the firm and employees – the firm needs to trust employees will use good judgment and employees need to trust the firm is making the tool available to improve productivity.  Ultimately, to be successful, there needs to be a good mix of established, general guidelines for appropriate use, as well as flexibility to enable “out of the box” usage scenarios.

When contemplating how to approach implementing these collaborative technologies in your organization, consider the four points above. The "build it and they will come" approach to technology doesn't work. However, it is a pattern that many in IT use to mostly their detriment. It's time to change the approach.

07 September 2010

User Surveys for Intranets

Dorthe Raakjaer Jespersen (sorry for the English spelling) at J. Boye recently posted a blog entry “New Intranet: do we really need user surveys?”  It was a good read about how user-centric research is an excellent foundation for a new intranet. 

Early in the article, she points to somewhat typical exchanges between intranet managers and company management; the archetypical intranet manager management thinks surveys will help the intranet team better understand the needs of the users.  The equally archetypical manager thinks they need to start building immediately – surveys will take far to long to complete.  Dorthe goes on to provide an excellent set of talking points intranet managers can use to encourage management to agree to use surveys and highlights some of the potential risks in forging ahead without the user data.

However, once you’ve gotten approval, what’s next?  What questions do you ask?  What sort of feedback should you expect to get from your end users?  How many individuals should be included?  The answers to all of these questions do depend on what you need from your user community, the size of your organization and the scope of your intranet.  To help you get started, here are a set of basic questions we would recommend you include in your survey:

  1. In what department do you work?
    This question provides context to the answers.  Expect every department to have different needs and desires.  The question may also give you a picture of future departmental participation and support, as well as an early indicator of departmental adoption.
  2. What is your age range?
    This sounds like a question you’d want to avoid.  However, the answer will help you evaluate responses.  Many organizations we’ve worked with recently have somewhat older populations.  The age of an employee tends to affect what features of an intranet are compelling.  Your Intranet should reflect the population age average.  If you have a somewhat younger workforce, social features like status updates or blogs may be more compelling.  Older workforces will likely be drawn to a more “traditional” informational Intranet.  Keep in mind that you cannot and should not over generalize; age, in and of itself won’t tell you a lot.  However, the data will provide another useful dimension to the analysis.
  3. How often do you use the Internet to support your work?
    In some organizations, the existing Intranet is little used or there’s no Intranet at all.  In its place, many employees will turn to public sources of content and information.  This specific question will help you gauge how much external vs. internal sources of information help people get their work done.  In fact, the answers to this question should be a limited list of options like: no access, my work is paper-based, I know the right person to ask, not interested, etc.   A side benefit of this question may be the discovery  of what services to offer through a newly designed intranet (assuming you follow-up this question with one that asks about their specific usage).
  4. How often do you use the existing Intranet?
    It’s likely if you’re checking your server logs, you already know the answer to this question.  However, getting direct feedback is helpful is validating your objective data.   Where possible, include a list of selectable ranges of time like: once a day, once to twice a week, monthly, etc.
  5. What functionality, types of information or content is important to you?
    Provide your survey participants with a list of functionality (e.g. applications), content and information that you’re either considering or have surfaced through the Intranet.  Let them choose what’s most important to them.  Use the answers to help guide your development.  More than one of our clients has chosen features or content poorly without this data (leading to community dissatisfaction with the Intranet).  Further, the answers can help validate or invalidate the inevitable “nice to have” functionality that often is introduced during development; if it wasn’t important to your user community, it shouldn’t be important enough to get included in the Intranet.  You can also follow-up this question with a free-text question allow people to suggest items that weren’t included in the list.

The preceding five questions should really be the start of about a ten (10) question or less survey.  In all cases, try to make survey questions very specific to your organization.  For example, you could ask about the location of the employee (if you have multiple physical locations), ask a matrix question that allows the participant to agree or disagree with various statements regarding your intranet (or what they’d like to see) and ask about usage outside of work (e.g. at home or through a mobile device), if those access methods are important. 

The survey should be one of the first exercises you perform when gathering requirements and/or intelligence on a new or redesigned intranet.  They generally provide very valuable insight into user behavior and needs, plus has the added benefit of allowing you to validate features, functions and “requirements” against direct user feedback. 

In closing, here are some other tips:

  • Surveys should be only one of a few data sets used to evaluate your needs.  While it’s a good foundational insight source, it can also be misleading; if someone doesn’t have a good answer for a specific question, they may simply make something up.  As a result, the size of the survey population has to be significant enough to counteract errant responses.
  • When designing the survey, keep the overall survey length to no more than 4 to 5 “pages”
  • The survey should take between 10 to 15 minutes to complete; longer surveys may work, but you’ll get lower response rates.
  • As mentioned earlier, the surveyed population should be significant, but also representative.  If you 10,000 employees, interviewing 50 people is insufficient as it represents less than 1% of your population.  Further, if you have a mix of factory employees and corporate, desk-bound employees, be sure to get people from both communities to participate.
  • Ask relevant follow-up questions.  For example, if you ask about access methods (e.g. from home, mobile devices, etc), ask if they access the Intranet from home, because they have no access in the workplace (e.g. many factory workers have restrictive work rules that may prevent access to PCs during their shifts).
  • Offering incentives for participation will greatly improve participant involvement.  Some clients offer gift cards for all participants, while others use the “win an iPod” approach with a participant chosen at random.  What you choose should reflect your culture and drive the sort participatory behavior you desire.
  • Follow-up this survey with a similar version post launch.  A follow-up survey will give you very clear measures of improvement and help to establish basic metrics for judging on-going success.  For a discussion of other Intranet metrics, see a great article by Toby Ward on Intranet Metrics.

30 August 2010

Oracle Internet Directory Membership Provider (LDAP) for SharePoint

A while back, I posted an article on how to create a SharePoint membership provider for Oracle’s Internet Directory (LDAP).   The post continues to be a relatively popular post and more than a few folks have asked for the source directly.

While I’ve generally tried to e-mail the membership class directly to anyone who requests it, simply posting it to the Consejo blog is probably easier on everyone.

Here’s a TXT version of the C# class.  While I’ve refactored subsequent versions of this class a few times, this version is still pretty raw, but functional (read: it’s a good start if you have nothing).  In this version, I used Kellerman’s Encryption Library to handle the MD4/MD5 hash format used by my client’s directory; interestingly they used one method for their test environment and one for their production environment.   While the Kellerman library is quite affordable (and easy to use), there is an open source alternative on CodePlex called .NET Crypto (Devv.Core.Crypto) as well as Microsoft’s Enterprise library, which include cryptography functions.

Other notes on the code:

  • If you have a MOSS implementation, you don’t need this class.  Microsoft provides an generic LDAP provider with the full server product.  This was written for those who only have WSS and need something custom.
  • The original requirements for this class were for creating a single sign-on environment between an Oracle Portal and SharePoint (sign on to the Oracle portal and get straight in to SharePoint without authentication).  As such, I didn’t write any code to handle password changes, resets or other management functions, since those would all be handled by Oracle’s product interfaces.
  • I’ve only overloaded the bare minimum necessary for the membership provider to work with SharePoint (see above bullet).
  • The lookup function for users requires exact matches.  In hindsight, I could have implemented the query a bit better to improve operation with the People Picker component in SharePoint; I didn’t, but hopefully you will and share it with the rest of us…
  • This was originally written for WSS v3.0, but there’s no reason, with potentially minor changes, it couldn’t work for SharePoint Foundation (2010).  If you get it to work in a 2010 environment, I’d love to see the implementation and hear your experiences.

 

Click HERE to get a copy of the provider class.

24 August 2010

Mastering Workflow Reports in SharePoint 2010

One of the challenges for SharePoint administrators is getting insight into what’s actually happening within the farm.  One element of management is workflow.  It’s not easy to discover what workflow processes are running, are there exceptions for a given process and how often is a process being used.

In the August edition of the SharePoint eZine, I discuss how to leverage workflow reports in the new 2010 version.  The various reporting and management interfaces make it relatively easy for administrators to better understand what’s happening.  While there are shortcomings in the available data (e.g. no whole farm reporting), what Microsoft provides does immediately provide value.

13 July 2010

Managing SharePoint SandBox (User) Solutions

In SharePoint 2010, Microsoft has provided new functionality called “Sandbox” or “User Solutions” that allow administrators and Site Collection owners to upload new functionality scoped to a single site collection. This means that site collection owners can host bespoke code or 3rd party add-ons that are useful to them without affecting others on the same farm. This functionality is incredibly useful in situations where organizations have shared SharePoint farms that serve the needs of various groups. It’s also very useful if organizations are looking to leverage services like SharePoint Online or Microsoft Business Productivity Online (both services offer a SaaS-based version of SharePoint), but have historically been prevented from including custom code.

In the May issue of SearchWinIT’s SharePoint E-Zine, I discuss the management controls and shortcomings of this new feature.

03 July 2010

Can Search really solve Information “Findability?”

We’ve all heard the lament from end users and IT professionals alike: “I can’t find what I need in our … [fill in the blank here – network share, intranet, portal, etc].”  The reason, virtually universally, is that: 1) there’s an unintelligible organization to the content and 2) using the internal search tool never seems to return the results people need/want.  As a result, there’s a growing sentiment that “the solution” is to just get a Google appliance (or other inappropriately expensive search tool) and everything will be fine.  It’s worthy of note that this sentiment comes from all levels in the organization – from executive business management to senior IT management and all the way down to the average joe/jane employee (IT or not) - making the statement carry that much more weight.

Interestingly, there’s a certain logic to this statement (perverse though it may be to people who spend their professional careers mired in trying to solve the problem of findability).  When most people search for content on the web, they overwhelmingly use Google’s search technology.  In my own experience, if the content exists, it’s likely I can find it with Google search.  How Google makes is happen is a mix of complex mathematics, massive computing power and (seemingly to me) black magic, since even companies with vast resources invested in bettering search (like Microsoft) have yet to equal Google’s search success.  However, isn’t Google’s success also partly due to perception and, frankly, low expectations?

By and large, research suggests that most people “hope” to find content when searching the web.  If I execute a query using Google’s search site, I don’t actually know if the content I want exists.  I hope that it does and, when I find it,  I’m pleasantly surprised.  By contrast, when I search for content internally, it’s not a question of “if” the content exist, it’s a question of where.  I know that the content lives somewhere inside my … [again fill in the blank – file share, intranet, portal, etc], I just don’t know where. 

When I use my portal’s search engine to execute a query, I expect to find the content I want.  However, when the content I know exists doesn’t appear in the search results (or doesn’t seem to appear), I get very frustrated (can I get a Marine hoo-rah if you empathize??).  If I’m feeling particularly persistent, I may execute another query, perhaps using different keywords, to see if I can find my content in a different way.  This second attempt may or may not yield better results.  In the end though, my perception is I’ve just wasted a bunch of time and I’m no better off.  Worse yet, I have now come to two very harsh, though potentially inaccurate, conclusions: 1) Google rocks and I don’t understand why we don’t use it internally and 2) whatever search technology we are using internally stinks (I’ve heard clients use more colorful language, which I’ll spare you here).  Also, and not any less important, I’m very deeply disappointed that I will be spending more wasted energy duplicating an effort to either recreate the content I can’t find or, at least, doing duplicative research to support the work I actually have to complete.

If you’re still reading, I suspect you not only empathize, but are hoping I’ll give you “the solution.”  My honest response is that if I had a silver bullet solution, I would probably be very wealthy.  I would be cruising the Atlantic on a large yacht, with a drink in my hand and not searching for anything in particular except perhaps the elusive lime to add a little something extra to my libation.  Since my reality is that there is no silver bullet solution (and I don’t have a boat), I offer some truisms and suggestions about finding content in your organization and how to make that process better:

  • Taxonomy is required (really) 
    If you want people to find content, in any repository, you must (I don’t use this work lightly) apply some sort of organizing  principle to that content (“organizing principle” is synonymous with taxonomy).  You don’t have to look much further than your physical file rooms (organized alphabetically), biology (order, genus, species, etc – you remember high school biology no?) or virtually any other repository of stuff to figure out that if it’s not organized you’ll have a slim chance of finding what you need.  To provide a very concrete example, look at Best Buy’s navigation for a technology category approach that helps you find the product you want; if you can’t find what you want, let it stand as an example of how poor taxonomy can confound someone.  That said, I recently had a CIO tell me that he didn’t “get” the value of taxonomy and that we all live in a “search-based world.”  Again, though I respect this particular CIO and I get the sentiment, it’s just not reality.  You must develop a way to organize your content and make that organization (taxonomy) infinitely clear to the people for whom it will be the path to finding content nirvana.   Frankly, not everyone will use search to find content and a poor taxonomy will impact your search tool’s ability to return relevant results.
  • Google is good, but it’s not likely to work internally
    It’s true search technology has improved tremendously.  Google is clearly the leader.  However, their success is not actually magic and probably won’t translate to internal search success; public search and “enterprise” search are different beasts; Google is very good at public search, but haven’t fared any better than any other search company within the enterprise.  Also keep in mind that, Google’s dominance in general public web search stems from a number of factors, most of which do not exist inside of any singular company (a few of those key dimensions are listed here):
    • An overwhelming volume of content that can imply topic relevance through cross-linking (keywords in one document and/or site that are linked to other content and/or sites that imply authority for that keyword)
    • Massive computing power that can be used to execute complex algorithms (their specific “secret sauce”)
    • Search analytics that help create patterns of relevancy based on actual user click behavior (result select or re-query)
    • Legions of Google staffers that constantly improve Google’s algorithms over time (based on content data and analytics).  Despite what you may have heard about what Google does for a living, it’s all about search (not phones or collaboration software).  No other part of their business comes close to generating the amount of revenue (obviously through ads shown with search results) or has the same amount of resources devoted to it.
    • Like Microsoft had “help” from IBM becoming a dominant player in the PC operating system business, Google had a similar giant help them early on – Yahoo.  When Yahoo was the most popular site on the web, guess what search technology they used?  That deal made it much easier for Google to supplant their patron, in later years, as the leader in search.
  • Search is not the exclusive answer to findability
    Even if someone could create the perfect search engine that returned very precise and relevant results, why do you want to force your user community to execute a search just to find content?  Doesn’t the mere act of search introduce yet another set of clicks and keystrokes?  Isn’t the goal to “get there in less than two clicks” and “provide answers quickly?”  Think about your own experiences with search.  How long does it take to formulate the appropriate query?  To review the results?  To find the right result, click on it and validate it’s actually what you want?  Wouldn’t it be easier to create a very clear path to the right content?  Better yet, don’t you already know a good deal about your employees and couldn’t you predict at least some of their content needs?  If so, why not just surface that content on the home page of your portal (or other appropriate location)?  Better yet, wrap those items in an RSS feed and deliver them through a desktop gadget (works on both MACs and PCs).  Do you think I’m crazy?  This technology surely couldn’t exist you say (or it’s too complicated to implement).  Have you ever visited your iGoogle page?  Have you ever ordered anything from Amazon?  These sites aren’t doing anything that revolutionary in the year 2010.  They’re simply using data they already know about you to automatically find what might be relevant (or asking you to choose topics for the taxonomy that you are interested in viewing).  Is it perfect?  No.  Does it save time in the long run?  Absolutely.  Does it provide you a somewhat “searchless” content findability experience?  You bet.  Could you still supplement this approach with a search tool?  Of course.
  • Successful search experiences require constant work
    Just because you spun up a Google appliance, SharePoint search (or FAST) or implemented Autonomy, you’ve only just begun.  Like anything else in this world, success comes from discipline, dedication and an ongoing effort to ensure success.  Search is no different.  More than one of our clients has called and asked for our help in improving their search experience.  Unfortunately, virtually all of them have done next to nothing, beyond installing the software, to make search work properly.  Whether it’s not excluding common navigation items on a web site (the same navigation shown on every page messes with relevancy for those keywords), avoiding the application of metadata on documents (like no title or descriptions – not even counting the “fancy” stuff like author, department, main topic area) or leaving patently irrelevant content in the repository past it’s expiration (like the snow day policy from 2001 that for some crazy reason is the most relevant document when using “snow policy” as a query), clients frequently thwart their own best intentions.  To make search work, you must do a bare minimum, like excluding content that should never be a result (like a home page), apply metadata with appropriate values, perform periodic “gut check” searches that should yield consistently relevant results and monitor the behavior of your users by actually looking at analytic data (you’d be surprised how many queries return zero results or where no one clicks on a result).  If you just do this minimum, your search experience will dramatically improve.

If I’ve prattled on too long in this post and you’ve missed my point about findability, here’s the short version: search is not the exclusive answer to finding content; you must start with a taxonomy that everyone understands (and fits your content), implement search properly and monitor progress (making changes when necessary).  Anyone who says differently is either selling a search tool or has been sold a bridge in Brooklyn.

07 June 2010

Does SharePoint Destroy Intranet Design?

In the latest blog entry from Jacob Nielsen, he asks an interesting question: does SharePoint Destroy Intranet Design? The question is interesting in that we get a variation on that question frequently from clients: what sort of design can I use with a site running SharePoint (i.e. what constraints are there on my visual design)?  The answer to both questions is: no and anything you’d like.

In Nielsen’s article, he points out that 4 of the top 10 winning intranets from his 2010 survey use SharePoint.  In fact, this is a trend that has continued from the 2009 survey, where 5 of the top 10 used SharePoint.  Nielsen even has screen captures in his article latest article (and in the reports) showing pretty varied designs across each of the winners.  More evidence of different visual designs (and experiences) can be found in the SharePoint Sites on the WSS Demo site (interestingly, this site is now using SharePoint Foundations 2010, so it’s technically not a Windows SharePoint Services demo…).  So why all the trepidation?  I’ll blame the out of the box experience from SharePoint.

Regardless of whether you’re implementing an intranet, an internet or an extranet site, the SharePoint siren’s call of “out of the box” is very strong.  Microsoft has provided “good enough” standard site definitions, visual designs and functionality; that out of the box design experience is actually (pardon the pun) by design – Microsoft hoped to save people time.  Unfortunately, you can’t please everyone.  As a result, many organizations want to change the visual design and experience.  In the SharePoint community, this is called making SharePoint look less “SharePointy.” (I’m not sure who first coined this expression, but it now seems like common vernacular).

If you’ve come the place where you’re questioning how to improve the visual design of the application you’re building on top of SharePoint or being questioned by others about “constraints” or “restrictions,” here some key advice:

  • There are no restrictions on visual design when using SharePoint
    It’s true that there are some elements that should be included in your new design, like the ribbon (in 2010) or the page editor toolbar (in 2007).  However, neither should stop you from creating a design that fits your organization.  Just keep in mind that SharePoint controls (e.g. web parts and the elements that appear during editing) may not render the way the rest of your design does.  I would recommend rigorous testing to ensure everything works as you expect.  Design what you like and apply it to your SharePoint application.  Really.
  • You don’t have to start with a Microsoft-supplied Site Definition
    Since SharePoint ships with so many site definitions (and visual designs), most firms assume that you have to start there and then customize.  This is far from the truth.  In fact, you can create a custom site definition from scratch.  This option requires lots more work, but you may need to head down this path for any number of valid reasons.   If you decide to create your own definition, just remember that you’ll have to enable the specific SharePoint features that make sense for your design (e.g. the publishing feature or search).
  • If your visual design isn’t complex or matches the “L” navigation natively in SharePoint consider a theme
    SharePoint themes are often a good way to create a unique visual design without the work involved in creating new master pages or, with more effort, site definitions.  Many sites, though visually distinct from the standard SharePoint design, can achieve their design goals simply with a theme.   Consider this: a theme takes a competent developer approximately 8 to 10 hours, while a master page could take two to three days and a site definition could take a week or more (depending on complexity).   If you don’t need the “extras” don’t spend the time.  Another benefit is the reduced testing and maintenance required, since themes are just CSS.

While there are some considerations when developing an intranet solution on SharePoint, the product does not destroy or adversely impact intranet design.  In fact, as Nielsen points out, platforms like SharePoint are optimized to create a solid intranet foundation.  In many ways, SharePoint improves intranet development productivity by reducing the design or implementation effort in other areas of your project.

11 May 2010

Inserting Arbitrary Links in a SharePoint Calendar

Some time ago a client hired us to build a custom web part that, among other things, would color code events based on a category assigned to an event, embed an “information” link into each date of a 30 day calendar view and provide a printable view for a specific month.  At the time, SharePoint 2007 was relatively new, as an organization Consejo had been building custom extensions for SharePoint 2003 for some time and it just made sense to continue down the path of a custom web part.  Interestingly, the task of build a custom calendar web part that would properly display events in an event list is harder than you might think (another story).

First, I would always recommend trying to buy before building; as a developer it’s tempting to build, but usually less expensive long-term to buy.  And, while there were at least one or two commercial web part options that provided color coding (Bamboo’s calendar plus web part was something we seriously considered), nothing gave our client the ability to embed their information link.  The goal for this link was to create a “light” integration between the SharePoint event calendar (where they posted all of their corporate events) and a 3rd party application that would display information related to catering for that date.  Essentially, when you clicked the information link, a new browser window opened to the URL of the event application with the date associated with the specific icon the user clicked.  Pretty simple and easy.

After a far-too-long development cycle to complete, the web part has been generally working within that client’s environment for some time.  However, they recently approached us for an update.  The request kicked off another round of investigation and an epiphany of sorts.

While attending SharePoint Summit 2010 in Montreal, I had the good fortune of attending Mark Miller’s (End User SharePoint) session on enhancing the SharePoint interface through jQuery.  Coincidentally enough, very little of Mark’s talk was about jQuery specifically, though he did share a few examples.  What he did show were numerous ways that you could manipulate the standard SharePoint interface using other JavaScript bits, including color coding a calendar, creating a printable interface and creating a tabbed interface.  Many of these scripts were developed by Christophe Humbert from Path to SharePoint.

After attending the session, trying the color coding script myself (really a combination of a calculated column and JavaScript) and seeing the possibilities, I decided to try my hand at recreating the custom web part we developed using just JavaScript and calculated columns.  While Christophe’s approach helped with the print view and the color coding, he didn’t have an example for the information link.  Fortunately, a little experimenting on my part produced the script shown below.

<script type="text/javascript">
/*
Insert the event icon script
Written by Consejo, Inc.
Questions: info@consejoinc.com
*/

var iterator = document.getElementsByTagName("td");
try
{
var i = 0;
var thisNode;
while (i<=iterator.length - 1 && iterator.length > 0)
{
thisNode = iterator[i];
var moreNodes = thisNode.getElementsByTagName("div")
if(moreNodes != null && moreNodes.length > 0)
{
for( var x = 0; x < thisNode.attributes.length; x++ )
{
if( thisNode.attributes[x].nodeName.toLowerCase() == 'class' && (thisNode.attributes[x].nodeValue.toLowerCase() =='ms-cal-topday' || thisNode.attributes[x].nodeValue.toLowerCase() =='ms-cal-topday-today'))
{
try
{
var onClickEvent = thisNode.getAttributeNode('onclick').nodeValue;
var origEventDate = onClickEvent.substring(16,37);
var cleanUp = new RegExp(/^([1-9]|1[012])+\\u002f+([1-9]|[12][0-9]|3[01])+\\u002f+\d\d\d\d/);
var cleanEventDate = cleanUp.exec(origEventDate)[0];
cleanEventDate = cleanEventDate.replace(/\\u002f/g,"-");

moreNodes[0].innerHTML += "<a href=\"http://www.videodetective.com/dvdcalendar.aspx?week=\"" + cleanEventDate + " style=\"font-size:8px;position:relative;right:-45%;\">Event Info</a>";
}
catch(err){}
}

}
}
i++;
}
}
catch (e)
{
alert( 'Error: ' + e );
}



 


To implement this script, simply copy and paste this JavaScript into a Content Editor Web Part loaded after the calendar view web part.  If you want to enhance the link, simply insert an IMG tag where the text is shown. 


The link in the script is to a site that shows what DVDs were released on the date extracted from the SharePoint calendar’s onClick event; a little regular expression work helps to extract the value provided by SharePoint.    Obviously, you should change the URL in the script to something that meets your needs, unless you really want to know what DVDs are to be released.



I very much want to thank both Mark and Christophe for demonstrating a very light-weight approach to adding new functionality to the SharePoint interface.  Next time, I’ll think twice about writing mountains of C# when trying to achieve a client’s goals.

26 March 2010

Getting to know SharePoint

Coming in May of this year, the new SharePoint 2010 promises to be a vast improvement over the existing 2007 version.  Like the transition from 2003, organizations are struggling to make key decisions about when to move to the latest version and what advantages it might provide.  In many cases, the answer greatly depends on your needs.    For enterprises that don't yet have SharePoint, but are evaluating the tool, the environment is probably even more confusing.

In an effort to help clients better understand both the upcoming version and the ecosystem in general, Consejo will be presenting at several regional and international events over the coming months.  If you're looking for greater insight into how SharePoint may or may not be a fit, I would highly encourage you to attend one of the following upcoming events:

  1. "What's so special about SharePoint" (webinar) hosted by the Real Story Group, 6 April 2010, 1 to 2 p.m. EST.
    The buzz around Microsoft SharePoint has grown steadily since the product's introduction in 2001.  With the advent of SharePoint 2010, the buzz has reached a cacophony.  This raises the question: what's so special about SharePoint.  Shawn Shell, Principal and Founder of Consejo, Inc.  and Tony Byrne, Founder of the Real Story Group will present a one hour webinar to help organization separate fact from fiction and help organizations figure out if SharePoint is right for them.
  2. SharePoint Summit 2010, 12 to 14 April 2010 in Montreal, Canada
    Shawn Shell, Principal and Founder, Consejo, Inc. will be presenting a session on "Managing a successful SharePoint Project" and participating on a panel discussing findability in SharePoint ("Findability to be or not to be").
  3. Midwest SharePoint 2010 Conference hosted by Imerge Consulting, Milwaukee, WI, April 15, 2010
    Shawn Shell, Principal and Founder, Consejo, Inc. will be presenting a session on "SharePoint Tips, Tricks and Traps" to help organizations take advantage of all that SharePoint has to offer, as well as helping them avoid potential pitfalls.
  4. Hardlines Technology Forum hosted by American Hardware Manufacturers Association (AHMA), 18 to 21 April 2010 in Schaumberg, IL
    Adonis Latham, Consultant at Consejo, Inc. will be presenting a session on leveraging InfoPath forms to help enhance SharePoint implementations. 

As the year progresses, there will certainly be more conference opportunities.  If you can't make it to one of these events, subscribe to our RSS feed to ensure you're aware of future events that may be of interest to you.

24 January 2010

Code Signing in Visual Studio 2008

I recently purchased a code signing certificate from GoDaddy.  After a great deal of trouble getting the certificate fully downloaded and installed (more about that later), I then tried to sign the assemblies for an application I had just completed.  To my surprise, I received the an error: “Error Importing Key.  Object already exists.”

After all of the trouble I encountered getting the certificate, I was sure I had the right PFX file, with the private key embedded.  I had chosen that certificate in the signing tab in the assemblies properties correctly.  I was also very sure that I supplied the right password for the private key.  Unfortunately, despite my best efforts, I kept getting the same error.

Thanks to the magic of search with Google, I found loads of articles and discussion groups where users were having similar troubles with the built-in VS signing.  Lots of different solutions were provided.  Unfortunately, none of the approaches worked.  One particular discussion within the forums on MSDN gave a good, though long, summary of all of the ways some developers have tried to fix the code signing problem in Visual Studio 2008.  If you have the patience to review the source material, you’ll find that most blogs or discussions revolve around the same sorts of options; again, none worked for me.

However, I then came across a blog article by John Robbins on code signing.  John gave useful details about a lot of aspects of his challenges, but he also mentioned something I hadn’t seen before: using the sign tool from the Windows SDK to sign the complied assemblies worked for me [NOTE: I’m developing on Windows 7; if you’re using a different version of Windows, you’ll need to download the right version of the SDK for your environment].

While I’m not much for loads of steps and external utilities, John also gave a simple post-build macro you can have VS run.  Based on this blog, this is what is in my post-build for signing the compiled assembly:

"C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\signtool.exe" sign /f [CERTIFICATE PATH] /p [PASSWORD] /t http://tsa.starfieldtech.com "$(TargetPath)"

The [CERTIFICATE PATH] sequence should be replaced with the path where you stored the certificate locally (the PFX file).  The [PASSWORD] sequence should be replaced with your private key password (not the key itself, but the password you used to secure the key).  The rest of the post build event is pretty generic, except the URL parameter for the timestamp server (the stuff that follows /t).  That particular URL is GoDaddy’s timestamp server.  If you’re using a different CA, you should use the server they provide.

I hope this helps other struggling with the same issue.  If anyone has solved the problem of getting VS to handling signing through the properties dialog, I’d love to hear it. 

05 January 2010

Nielsen/Norman Group’s 10 Best Intranets of 2010

Welcome to 2010!  I hope you had a fantastic new year! 

To start this year on a high note, I wanted to highlight Nielsen/Norman Group’s yearly 10 Best Intranets.   The 2010 edition, like past reports, provides insights into some of the best intranets across organizations of various sizes, shapes and industries.  What I like best about the report (as well as report’s like Jane McConnell’s Global Intranet Trends Report) is the chance to see how different organizations take on the challenge of improving employee productivity through content technologies.

Here are the some of the highlights I discovered:

  • Intranets are getting a higher priority in the enterprise
    Better technology is enabling organization’s to produce better intranets.  NNG also notes the average increase in the size on intranet teams, giving enterprises more resources to produce and maintain these applications; in fact, the average team increased 27% to 14 people from 2009.  In Consejo’s own work, we have seen an increased focus on intranets across all of our clients; this is especially true of organization’s leveraging SharePoint, as much of those implementations involve internally facing applications.
  • Mobile continues to garner attention
    It’s far from a widely adopted feature, but mobile access is becoming increasingly important.  Of the surveyed companies, 30% had special mobile features.  NNG made a specific point about creating unique mobile experiences instead of merely trying to adapt an existing intranet design to a mobile device.  For example, one of our clients built a specific Windows Mobile application to download list items from SharePoint.  NNG cites another client that built an iPhone app for their intranet.
  • Social features gain real traction
    NNG called it the “year of social networking.”  Previously, NNG cautioned organizations about using the word “social” and many of our own clients refuse even use the word; one client prefers to use words like “collaborative” or “interactive” in lieu of social to avoid executive confusion with sites like Facebook.   However, as NNG points out, this trend is reversing and social media (as well as features) is gaining credibility.  For more insight into this area, take a look at the CMS Watch report on Enterprise Collaboration and Community Software.
  • CEO Blogs
    NNG highlights that the typical “boss blog” is getting a bit of a “face lift.”  Instead of the monolithic and “talk at you” approach of historical executive blogs, more organizations are, in NNG’s words, “show[ing] executives with a ‘human face’ and [helping to] make them more approachable.”    Toby Ward at Prescient Digital wrote a terrific blog article on the “8 ingredients of a great  executive blog, ” which summarizes some of the same themes NNG found in their research, specifically the inclusion of social media and audience engagement (like comments).
  • Focus on usability and improving features
    This point is a bit of an interpretation on my part, but NNG cites changes in the ways that organizations are encouraging use.  There’s less of the “built it and they will come” approach and more explicit, upfront research on usability and needs.  At Consejo, we typically encourage our clients to conduct surveys and in-person interviews to ensure the newly designed  intranet creates and improves productivity, as well as reducing the frustration that often accompanies change.  We also use that data to evaluate overall success of the intranet post launch, in addition to conducting post-launch surveys.
  • Continue quality improvement
    A trend that should simply be “par for the course,” NNG cites efforts that many enterprises are taking to improve the quality of their intranets.  Interestingly (at least for a consulting firm that focuses on SharePoint) is that “frequent use of SharePoint” was the first bullet under this heading.  NNG does note that “many other technology platforms were common as well [and that] no one solution guarantees a great intranet,” but I thought it was an interesting point (especially since half of the “winning” intranets in 2009 ran on SharePoint).  As the SharePoint Report 2009 from CMS Watch points out and what we’ve learned through our SharePoint Fast Track offering, collaborative applications like Intranets are definitely a strength of SharePoint; NNG continues to reinforce this idea through their research.  Beyond SharePoint, NNG points out that search continues to be a problem (though improving), editorial workflow is more extensively used to ensure content quality, more organizations are using role-based personalization (as well as personal customization), companies are waking up to the idea that you need to measure success (Trend Micro saved $1.6 MM) and more intranets are creating consistent presentation through the use of page templates (something WCM and portal tools have long included).  All of these trends add up to a vastly different intranet and improved experience.

As 2010 offers fresh opportunities for enterprises to further improve their intranets, it will be interesting to see how the old trends continue and what new trends emerge.  And, while we have seen both successful and unsuccessful intranets in many different kinds of organizations, it’s gratifying to see the progress being made.

We wish all of our clients and potential clients a prosperous new year!  May your intranets bloom!