76

Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

  • Upload
    vutu

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation
Page 2: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

2

ColofonDIWUG SharePoint eMagazineNr. 6, March 2012

Publisher:Stichting Dutch Information Worker User Group (DIWUG)

Editors:Marianne van [email protected] van [email protected]

Special thanks to:All authors and sponsors!

Design and layout:Barth Sluytershttp://home.12move.nl/barthsluyters/

©2012. All rights reserved. No part of this magazine may be reproduced in any way without prior written permission of DIWUG or the author. All trademarks mentioned in this magazine are the property of their respective owners.

Page 3: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

3

This issue is sponsored bySee page

It’s here,DIWUG SharePoint eMagazine 6!

Editor’s note

You are reading the 6th edition of the DIWUG SharePoint eMagazine. We are again very proud of the authors and the articles in this edition of the magazine. I know I learned a lot while reading the articles and I hope you will too. I would like to thank all of our authors and sponsors again, as without them there wouldn’t be a magazine. As always we are looking for new authors and sponsors for the next edition of our magazine. The deadline for both articles and advertisements for the next magazine is May 1st 2012. If you are interested in either writing for or sponsoring the DIWUG eMagazine please contact Marianne van Wanrooij ([email protected]) or me ([email protected]). If you would like to meet us in person you can find us in the following places:

The regular DIWUG events (keep track of http://www.diwug.nl for the next event) DIWUG is organizing SharePoint Saturday Netherlands on March 24th 2012. Unfortunately we are already sold out, but you can find more information at www.sharepointsaturday.org/nl.

We will be in London for the International SharePoint Conference from April 23rd till 25th. This conference will be something different with the developer, infrastructure and business tracks being a continuous story that evolves over the 3 days. For more information check out the web site at www.internationalsharepointconference.com.

It’s still pretty far away, but in we are looking forward to the SharePoint Conference in Las Vegas from November 12th to 15th already.

http://www.mssharepointconference.com. On 20th and 21st November we’ll be in Amsterdam at SharePoint Connections. You can now get a €150 Super Early Bird discount by registering before May 31st.

http://www.nccomms-events.com/spc2012.I hope you enjoy reading this edition of the DIWUG SharePoint eMagazine as much as I did!

Mirjam van OlstEditor DIWUG SharePoint [email protected]

Page 4: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation
Page 5: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

5

Using Innovation Games® to understandwhat your users really need

from SharePointby Ant Clay

Even the most successful agile teams fall down when it comes to getting a shared understanding and the rationale behind their requirements; how can we expect our SharePoint projects to do

any better? SharePoint, unlike any other platform, can provide a huge range of solutions; the challenge is understanding what’s important for your organisation.

21apps have been using agile techniques and Innovation Games® to help people roll out SharePoint and ensure it aligns to their business goals and aspirations. In this article we will

explore why these challenges exist; understand the bias people have and why businesses often aren’t included in the delivery of what is supposed to be a ‘business platform’. We will explore

using serious games to help the business discover and achieve its goals; how they allow the project team to engage with business users without being constrained by the traditional IT bias.

Figure 1: SharePoint Wheel (Out of focus) – Confusion or Clarity?

The reality for projects is that challenges appear very quickly; the consultant presents the eager business and IT stakeholders with their pitch based on the magical SharePoint wheel of features! Does it bring clarity to the business needs or just confuse things?

Our experiences are that using this visualization as the basis of requirements gathering is quite often a bad idea (it does have a definite positive role, but that’s later in the project). You’re unwittingly framing the project in technology terms rather than

The problem with business users and SharePoint…

…is the technology, cool features and IT department.

Yes this may be a little harsh and possibly not the best way to start an article aimed at mostly IT folks, but I think it is true we are our own worst enemy!

Let’s start this discussion with something familiar, the SharePoint wheel.

Page 6: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

6

having a clear business goal. This is exasperated quite often, by unwitting business stakeholder responses to:

IT Say - “What do you want SharePoint to do for you?”

Business Stakeholders Say - “Well what does it do?”

The default response to this is quite often to rely on the ‘SharePoint wheel’ as a kind of crutch. It’s in this situation, when your client doesn’t really know what they want or how to articulate it, that project issues can start to occur.

Have you ever:

Struggled with getting the business engaged in what SharePoint really means to them

Had that ‘sinking feeling’ at the idea of another meeting talking through a big requirements document

Want to try something different, fun, and innovative and of even more benefit to the participants

I am still surprised by the amount of requirements meetings and documents that I come across that are predominantly based on technology features with no alignment to the business at all. It’s the use of traditional (usually analytical) approaches that cause this. Traditional techniques (analysis) often can be:

Highly constrained and overly precise

Assume people have all the answers

Make significant assumptions

Collaborative and facilitative techniques can:

Allow you to explore alternatives

Enable answers to be discovered during the process

Help people focus on business value rather than the technical features ‘crutch’

The paradox is that SharePoint is a ‘collaboration platform’…

…but we often fail to collaborate on what we want to use SharePoint for

So why are most businesses not included in the delivery of what is supposed to be a ‘business platform’? Sometimes the business genuinely is not interested and has no motivation to engage in the SharePoint project, but I’d put my money on the fact that for the majority of projects it’s just easier for IT to ignore the business, either because they don’t know how to or in extreme cases just because they don’t want to. That leads to the SharePoint project team making lots of business assumptions and delivering what it is assumed the business wants on the basis of a few dry, unproductive meetings.

What a difference a game makes...If traditional (analytical) techniques are failing us in the SharePoint-world, then what is our alternative, is there any hope?

We’ve researched techniques both outside of the SharePoint world and even outside of IT completely and have found that ‘serious games’ techniques like Innovation Games® (and other techniques such as Gamestorming and visual facilitation) are especially effective at preventing ‘technical feature focus’ with business stakeholders. It just doesn’t seem to feature in any of the conversations; they just tend to gravitate

Page 7: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

7

to business outcomes, alignment with strategy and the good stuff that we are all striving for.

Why do you think this is?Why do ‘serious games’ work so effectively? Perhaps their traits will give us an insight? They are:

Structured

o Clear rules

o By default there are no winners

o Not like work

Purposeful

o Definite outcomes and goals (explicit and/or implicit)

o Actionable results

Time-Bound

o They are time-boxed

Participatory

o Success and value depends on everyone participating

o Fosters co-creation

o Engaging and fun process

Egalitarian

o Everyone has an equal opportunity to participate

o No concept of ‘rank’ or hierarchy

We can even go as far as to think about what Daniel Pink states in his seminal book ‘Drive – The Surprising Truth About What Motivates Us’, where we can find clear synergies.

Autonomy

Supported by the ‘Participatory’ facets of Innovation Games®

Mastery

Supported by the ‘Egalitarian’ facets of Innovation Games®

Purpose

Supported by the ‘Structured, Purposeful, Time-Bound’ Innovation Games® facets

And we shouldn’t forget that our brains are wired for intrinsic motivation of the kind:

If

‘Figure out puzzle, challenge or quandary’

Then

‘Release pleasure creating chemicals (opioids)’

Perhaps then, these are some of the reasons why the old style of analytic requirements gathering (and meetings and workshops in general), are often so ineffective, because they:

Demanded your attendance

Do not have clear or actionable results

Allow hierarchies to reign supreme

Page 8: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

8

In summary, ‘serious games’ are proven to enable us to ‘do work’, gain ‘serious customer insights’ and deliver ‘actionable insights and results’ whilst ‘having fun’. Isn’t this what we really want and are trying to achieve from our requirements gathering workshops?

How’s this work for SharePoint?You may now be thinking how do I get me some of this goodness in my SharePoint projects? Well guess what, on the whole this is all analogue stuff (caveat there is an online Innovation Games® platform) and all you need is:

Whiteboard / paper

Pens

Lots of craft materials (Yes I do mean pipe-cleaners, glitter, glue and googly-eyes)

Some training in the techniques

A change in your world-view

So where do ‘serious games’ techniques actually fit in SharePoint projects?

Figure 2: Where serious games fit

As highlighted in the diagram above, ‘serious games’ fit in two primary categories:

Ideation

Prioritisation

‘Serious games’ are not the answer to every problem you may face in your SharePoint projects, but for the purpose of this article, the use of Innovation Games® and Gamestorming techniques can seriously enhance:

Business stakeholder engagement

Requirements facilitation

Innovation

Requirements prioritisation

Strategic planning

For the rest of your SharePoint problems, the first place I’d recommend you look is your Governance, but that will have to be the subject of another article. Let’s just worry about getting the business requirements nailed first; I’ll take you through two specific scenarios where these techniques really drive significant value: ‘requirements facilitation’ and ‘requirements prioritization’; both are areas that I am sure you have experienced significant wasted efforts and seen projects start going off course.

Page 9: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

9

Scenario - Requirements facilitationWhen we are trying to derive what our end-users and business stakeholders want with SharePoint (and avoiding technology features), we should be looking to facilitate (not analyse) requirements in terms of business vocabulary, such as:

User stories

Business value

Difference made

Progress towards Vision and Goals

Return on Investment (ROI)

To get to these business insights, we could use a variety of Innovation Games® both in isolation and combined, such as:

Product Box

SailBoat

Give Them a Hot Tub

Remember the Future

In this article we’ll look at a couple of my favorites:

Product Box... seeks to identify the most exciting, valuable and important features the client wants you to deliver.

Figure 3: Product Box

The primary reasons I love this exercise so much are:

It’s like nothing most clients have ever been involved in as part of a SharePoint project

It’s great fun

It delivers awesome results!

Page 10: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

10

ApproachAsk your end-users and business stakeholders to imagine that they’re selling the ‘SharePoint Intranet’ or ‘social features’ or ‘HR portal’ (insert your project name) at a tradeshow, retail outlet or local market.

Give them a few plain (cereal box sized) boxes and lots and lots and lots of craft materials and ask them to literally design a product box that they would buy. The box should have the key marketing slogans that they find interesting, ingredients, special offers and all the other things you expect to find on a cereal box.

When they’ve made their creations, get the attendees to present to the group as though you are a skeptical prospective customer using their product box creation to sell the SharePoint solution to you.

Allowing attendees to express their desires for the project in a tangible, analogue and creative manner can lead to some astonishing results. It is not unusual for people to take their product boxes back to their desks and proudly display them for all to see, in fact I had someone at the recent SharePoint Connections Conference in Amsterdam proudly bring colleagues and friends to our stand to show them what he had created in a product box session we ran at SharePoint Saturday UK a month before!

Sailboat... is an adaptation of the Innovation Game® called SpeedBoat and gets your clients to talk openly about what’s great and what’s not with your existing system (SharePoint or not) that you can use to help formulate future business requirements.

Figure 4: SailBoat

Page 11: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

11

Draw a boat on a whiteboard or sheet of butcher paper. Actually in my experience, it’s even better if you can get someone from the client team to draw the picture as that increases the sense of co-creation and ownership. You’d like the boat to really move fast towards the goal (for more impact draw the goal as a tropical island the boat is heading towards). Unfortunately, the boat has a few anchors holding it back. The boat is the SharePoint solution, and the group writes things that don’t work well as its anchors.

When the group are finished posting their anchors, review each one, carefully confirming your understanding of what they want to see changed in the system.

In addition to focusing on the negatives, I think it works really well to also get the customers to think about what they really love and want to keep in the current system and get them to write (or draw) on clouds or gust of wind (how do you draw wind!?), the bigger the cloud or gust of wind, the more important it is to them.

Using a visual metaphor is really important to heighten the ‘game’ aspects and customizing the game visualisation will make it more in-tune to the group and can result in more valuable feedback.

All through playing the game it is important for an observer to be noting the key points made from any discussions and collaborations that occurs around the anchors and wind clouds. These observations provide extremely valuable additional data.

The results of playing... both these games with your end-users and business stakeholders will give you insights into both:

Breakthrough requirements (the ones IT just couldn’t assume)

Business insights

Positives and negatives of the existing platform

These games can work on multiple levels from a strategic level down to specific requirements, depending on how the game(s) are framed, the constraints applied and the visualisations used.

Scenario - Requirements prioritisationWhen we are trying to understand what our end-users and business stakeholders want with SharePoint, how important certain business functionality is and deriving a prioritised list of activities, do you honestly think that just asking them will give the right answer?

Even using a well adopted technique like MoSCoW (Must have, Should have, Could Have, Won’t have) doesn’t really deliver the right results. I have first-hand experience of this; at a recent SharePoint requirements session (that I wasn’t leading), we went through MoSCoW and what happened? As always 85% of the requirements were classed as ‘Must haves’ the rest spread across the other categories. In this type of workshop, people are afraid of losing their ‘requirements’, so everything with any vague business value will naturally be gravitated to the ‘Must have’ pile...

That’s not really prioritising requirements; it’s more of a protection racket!

To get true value, we should be looking to facilitate (not analyse or force) the stakeholders and business users to tell us, in terms of business impact, what the priorities are, and equally importantly their reasons behind this.

Page 12: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

12

To derive these business-led prioritisations, we could use a variety of Innovation Games® both in isolation and combined, such as:

Buy a Feature

Product Tree

20/20 Vision

In this article we’ll look at my favorite:

Buy a Feature seeks to get your clients to create a prioritised list of business requirements for your SharePoint project in a collaborative manner.

Figure 5: Buy a Feature

Create a list of features (prior to this session, perhaps taken from SailBoat or Product Box) with an estimated cost. The cost can be development effort, complexity or actual development for the requirements. During a fixed time period, using ‘play money’; Monopoly money works well – but if you can print project specific money it works even better, your customers buy the SharePoint requirements (features) that they want.

The requirements or features are priced high enough (compared to the budget each individual has) that no single customer can buy the features. This helps motivate customers to negotiate between themselves as to which features are most important. Observation of this negotiation provides fantastic insights into what customers are willing to pay for (prioritisation).

There is actually a lot of subtle techniques you can use in this game depending on what you are looking to get from it, regardless of which everyone playing it will have fun.

Page 13: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

13

The results of playing prioritisation games like Buy a Feature with your end-users and business stakeholders will give you very clear and appropriate insights into:

Business priorities Background reasons why

Cultural traits

ConclusionAs you no doubt already know, getting a shared understanding and a clear rationale behind your user’s SharePoint requirements is a challenge we all face. I hope that this article may have inspired you to change the way you work with end-users and business stakeholders to illicit true requirements and business priorities, in a collaborative and enjoyable manner that will reap significant benefits for both your customers and yourself.

What you should do next?Start Playing Games Now!

Have a goal Pick an appropriate game Prepare, then prepare, then prepare some more Make sure you have more than enough resources The bigger the room the better Relax, play the game, write down all your observations Socialize the results

Plan the next game …

Make using ‘serious games’ techniques an ongoing activity by including them in: Requirements Planning Retrospectives Ad-hoc decision making

Making boring meetings fun!

Most of all remember that there is an alternative to having uninspired business stakeholders and frustrated end-users by using Innovation Games®:

“The seriously fun way to do serious work”

Page 14: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

14

Effectively Managing Permissions in Microsoft SharePoint 2010

by Antonio Maio

A well-planned Microsoft SharePoint solution structured to appropriately organize enterprise content and optimize access to it has several positive impacts on the enterprise. End users

will more easily find where content should be stored or accessed, thereby increasing adoption of SharePoint as the enterprise’s central collaboration and content management

solution. As well, data governance policies can be more easily applied based on the organization’s policies. However, another important positive impact is that SharePoint

performance for end users and administrators can be greatly improved by organizing content according to published best practices.

Security permissions applied to sensitive content within SharePoint increase the need for a well-planned and thought out content structure. Many organizations are finding that increasingly end users are storing sensitive content within SharePoint libraries, requiring more targeted permissions and policies be applied. In order to effectively use fine grained permissions without negatively affecting performance, it’s important to understand published boundaries and guidelines in relation to applying security permissions to sensitive content within SharePoint.

Microsoft Published GuidelinesMicrosoft has published several useful capacity recommendations for SharePoint 2010 and how various configurations and structures can affect overall SharePoint performance. SharePoint is extremely customizable to support many different business needs and environments. As a result, organizations often need to consider these recommendations to ensure that SharePoint continues to operate efficiently within the context of their specific business implementations.

For the full list of capacity and performance recommendations on SharePoint 2010, please refer to Microsoft’s extensive documentation on the subject: http://technet.microsoft.com/en-us/library/cc262971.aspx.

Several recommendations Microsoft makes have to do with how content is stored, while others deal with how fine grained permissions are managed. These recommendations are important to understand, in practice and within a wider context of other SharePoint limits.

Many organizations are finding that increasingly end users are storing sensitive

content within SharePoint libraries, requiring more targeted permissions and

policies be applied through automation

SharePoint Security Definitions

Securable ObjectA securable object in SharePoint is any object to which permissions levels can be assigned to users or groups including sites, sub-sites, lists, libraries, folders, document sets, documents or items.

PermissionPermissions in SharePoint are specific privileges that can be assigned to a securable object (ex. view items, edit items and delete items are 3 examples). There are 33 different permissions provided with SharePoint 2010, and new permissions cannot be created.

Page 15: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

15

DIWUG TIPS & TRICKS

Renaming a Library

When you rename a site in SharePoint using the UI the URL will also be changed.But if you try to rename a Library you will see the URL will be the same as before.If you are allowed to use SharePoint Designer you can easily rename the URL.When you are not permitted or SharePoint Designer is unavailable at your computer there is another easy solution.Open the Library in Explorer View, right click and rename it.

Filter Calendar items on Startdate in a CQWP

If you want filter Calendar items on Startdate, for example greater or equal to [Today]. You will see that this option is not available when you select a list as a content query.Selecting Site with subsites as Content query will make the sorting option available.

Jan Ligtenberg, trainer/ consultant APS IT-diensten,[email protected] 06 10634297

Permission LevelPermission levels are groupings of individual permissions. By default SharePoint provides a permission level named ‘Read’ which contains 11 specific permissions designed to allow users to view pages, view list items and download documents but prevents users from editing items or documents. Administrators can create custom permission levels.

Security PrincipalA security principal is a SharePoint user or group, an Active Directory user or group, as well as non-Windows users like SharePoint form-based accounts.

Security ScopeA security scope is made up of an access control list (ACL) and a mapping between the users or groups within the ACL to specific permission levels. This ACL can include any security principal. A security scope is created within SharePoint whenever a securable object breaks inheritance. SharePoint begins with 1 security scope at the site collection level, and by default all items within inherit the permissions of that scope. When unique permissions are applied to an item within the site collection, inheritance with its parent’s scope is broken and a new unique security scope is created.

For example, if a library has a set of permissions so that some users have full control and others have read access to content, this constitutes 1 security scope. If a document within that library then has unique permissions (ie. it breaks inheritance) that constitutes a 2nd scope. If another document has a unique permission applied to it, where an Active Directory group of 1000 users is given read access, this constitutes a 3rd scope.

Limited AccessWhen a unique security scope is created for an item a Limited Access permission level will be automatically added to the item’s parent (library or list), and its parent (site or sub-site) and so on all the way up the content hierarchy. This is done in order to provide the user with enough access rights at all levels to navigate to the document or item with unique permissions. Adding the Limited Access permission level does not add any additional security scopes, however it does add security principals to the security scope.

Page 16: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

16

The Structure of Permissions and Scopes within SharePoint

Figure 1: This diagram illustrates how security is structured within Microsoft SharePoint

In this scenario a new scope is created each time an item at any level breaks inheritance. This example contains a total of 12 securable objects and 4 security scopes. Item3 has a unique set of permissions within the List, the Folder has a unique set of permissions within the Library and Document3 has a unique set of permissions within the folder. The number of security principals is shown for each security scope, and we can see where Limited Access permissions have been automatically added.

Page 17: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

17

Recommendations on Unique PermissionsOne important Microsoft recommendation in SharePoint 2010 is that lists and libraries can have a maximum of 50,000 unique permissions. This is actually a configurable value called the List Unique Permissions Threshold which can be adjusted by administrators in the Central Administration console. It refers specifically to the number of items in a library that can have a unique set of permissions at one time. Remember, whenever a unique set of permissions is applied to an item or container, it breaks inheritance with its parent and a new security scope is created.

Although this variable is set by default at 50,000 there are various recommendations made in several Microsoft documents and postings about not exceeding a much lower threshold of 5,000 or even 1,000 scopes in order to optimize performance. As well, there is other documentation contradicting it by saying it is dependent on the List Query Size Threshold (see the Microsoft support article: http://support.microsoft.com/kb/2420771).

In general, minimizing the number of unique security scopes to 5,000 scopes or fewer per library is considered good practice because of the way SharePoint retrieves data from the SQL Server database in order to analyze security scopes. What we have found with customers and through extensive testing is that the maximum number of security scopes you should design for is very dependent on 2 things:

The size and architecture of the SharePoint farm (servers, memory, CPU, web front ends, etc), and

The structure and organization of content

Exceeding this recommendation in a farm environment that has not been designed for large amounts of content or unique permissions can negatively affect the user experience causing delays in SharePoint analyzing security scopes and recalculating ACLs before rendering the view.

It’s important to note that this recommendation specifically refers to the total number of scopes within a library, including those applied to folders. For example, if you have a library containing 1 folder and 1000 documents each with a unique security scope, and the folder contains another 1000 documents each with a unique security scope, the library effectively contains 2001 unique security scopes.

In practice, 5,000 items with unique permissions in a single library can be reasonable for many environments, depending on size and configuration, without negatively affecting performance for end users. For many small to medium sized organizations, individual libraries with 5,000 documents represent a large amount of content. However, content is growing at an explosive rate in all industries so it’s important that information architects design for these types of situations today.

Even in large enterprises, SharePoint content tends to be spread across multiple libraries logically, typically by department, team or function. In all practicality, having over 5,000 items with unique permissions in one library probably suggests that a slightly different structure is required for organizing this content. SharePoint provides many options for organizing content and keeping it accessible to end users.

Page 18: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

18

The following are some simple recommended strategies for organizing content not only to optimize performance, but also to make content easier for end users to access and work with:

Organizing content logically within sites, libraries and lists by team, department or function where similar groups of people have the same access rights

Structuring libraries so that content accessed by all users inherits it’s permissions from a parent library, and fine grained permissions are applied only to sensitive content

Using Active Directory groups to apply permissions can help to greatly reduce the number of individual users with explicit permissions set

Organizing content within folders can also be used to better structure content in SharePoint – for example, storing 100 documents with similar function and the same permissions in a folder, will reduce the number of security scopes from 100 to 1

Related Limits and ThresholdsThere are other related limits and thresholds to keep in mind when managing the enterprise’s security needs and the structure of your SharePoint content.

Size of the Security ScopeMicrosoft recommends that security scopes have no more than 5,000 security principals. This is a threshold and not a hard limit. So, a maximum of 5,000 groups or users each with their own permission level can be applied to any securable object.

Active Directory (AD) Groups versus SharePoint groupsMicrosoft recommends using AD groups when using groups to set permission levels, as opposed to SharePoint groups. AD groups are much faster and more efficient for SharePoint to process.

List View ThresholdA setting was introduced into SharePoint 2010 called the List View Threshold which controls the number of items that can be retrieved from the database on any query. This value ultimately affects the number of items that can be viewed at the root level of a library or a folder – its default value is 5,000, it can go as high as 50,000, but it is dependent on farm size and architecture as well. Microsoft recommends not exceeding this value when storing items in a list, library or folder, because doing so can cause a general slowdown across your SharePoint repository. Depending on how your content is organized, it may not be practical to store more than 5,000 items in a single library or list because those items can become increasingly difficult to find and work with.

Very Deep HierarchyVery deep content hierarchies within SharePoint will increase the amount of work required for SharePoint to apply a unique permission. This occurs because SharePoint must iteratively move all the way up the hierarchy applying the Limited Access permission level for each security principal added to the specific item.

ConclusionOverall, it’s good practice for enterprises to have a well structured SharePoint farm, sized and architected appropriately to meet the business need. Fine grained permissions are a useful feature in SharePoint for securing sensitive content, but administrators and information architects need to understand the ramifications of using them. It’s recommended that unique item level permissions be used primarily for sensitive content in SharePoint. Determining which content is sensitive can be based on the item’s metadata, and should be managed through some automated process or tool. As well, its recommended that content be organized logically with appropriate libraries, lists, folders and sites. Finally, it’s critical to ensure that sensitive content is secure within SharePoint and that the right users are accessing the right content.

Page 19: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation
Page 20: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

20

Dynamic Ribbon customizations with Page Components

by Wictor Wilén

Building Ribbon customizations for SharePoint 2010 is one way to improve the user experience of the SharePoint interface and by adding functionality to the Ribbon you get

a higher adoption rate compared to custom functionality added elsewhere. In this article I will show you how to extend the default Ribbon for document libraries by adding a fly-out

menu where the end-users directly can kick of a workflow.

Improve the Workflow experienceThe out-of-the-box experience for starting workflows for a document in a document library could be better. By default there is one button in the Ribbon user interface which is used to start workflows. This button navigates away from the library to a new page where the end-user starts the workflows. In this article we’re going to build an advanced Ribbon customization by adding a new control to existing libraries which can be used to start workflows easier and faster. The control is a fly-out anchor that will list all list and content type workflows for the selected document and it will allow the end-user to start the workflow immediately.

This sample will use several of the techniques that a SharePoint developer of today must be skilled in to build successful and efficient customizations of SharePoint. First of all we’re going to use CAML to declare our Ribbon actions, and then we’ll use JavaScript and jQuery to define the logic behind the Ribbon actions. We’re going to use C# to create the server-side logic that reads all workflow associations and eventually starts the workflows. All this will be done in Visual Studio 2010, in which I’ll also show you some tips and tricks on how to efficiently work with SPI’s (SharePoint Project Items).

Figure 1: This is what the end result of this Ribbon customization will look like.

Create the FlyoutAnchor controlTo start building our Ribbon customization we’ll start with a new empty SharePoint project in Visual Studio. Make sure that it is a full-trust solution, since we’re going to deploy things into the Layouts folder and use delegate controls. Once the project is created we’ll add a new Empty Element SPI and give it the name WorkflowExtension. This is the SPI that we’re going to use to hold all of our items that we’ll add to SharePoint. When the SPI is added a Feature is automatically created for us; rename

Page 21: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

21

that one to SiteRibbonExtensions and change its scope to Site – we want our Ribbon customization to be scoped to the Site Collection level. In the elements.xml file that was created for us we’re going to declare our Ribbon customization, a FlyoutAnchor control.

To add a new control to an existing Ribbon group, we first have to identify the ID of the group. The easiest way to do this is to locate the group in the cmdui.xml file that contains all global Ribbon definitions. The cmdui.xml file is located in the {SharePoint Root}\TEMPLATE\GLOBAL\XML\ folder. This file contains all the default Ribbon tabs and controls. If you are serious about making Ribbon customization you should get to know this guy pretty well, since it will help you a lot with ideas and samples.

Figure 2: The cmdui.xml file contains the default Ribbon declaration and is very useful when you’re extending the Ribbon

Once we know the ID of the group that we would like to add our controls into we can start building the customization. First of all in the elements.xml file that was created when we added the Empty Element SPI we’ll add a new CustomAction element. Give this element a unique ID and set the Location to “CommandUI.Ribbon”, to indicate that it’s a Ribbon customization. Next up is adding tons of XML.

First of all we add three elements; the CommandUIExtension, CommandUIDefinitions and a CommandUIDefinition. Only the last one needs any attributes, and it must have the Location attribute which should point to where we would like to do our customizations. In this case it’s the Ribbon.Documents.Workflow group that we would like to insert a control into. To do this we need to insert our control as a child to the controls in that group. This gives us the location Ribbon.Documents.Workflow.Controls._children. Notice how we add .Controls._children to the Location. Your elements file should look like the one in listing 1 now.

Listing 1: Elements file after adding CommandUIExtension, CommandUIDefinitions and CommandUIDefinition

Once this is done it’s time to declare the actual control. In this case we will use the FlyoutAnchor control and that control has an element called, surprise!, FlyoutAnchor. First of all we add the basic attributes. The controls must have a unique ID. I’ll usually follow the same convention as the default Ribbon controls do and use the group as a namespace and in this case give the control the ID Wictor.WorkflowExtension.Workflows.

Page 22: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

22

Then we add the Alt and LabelText properties which are used as the alternative text and the label text. We want this control to be the first of all controls in the group so give it a Sequence less than 10 (the default controls always have multiples of 10). To give the button an icon we just copy the values from the default Workflow button and add the ImageXXbyXX attributes.

Finally we have to set a TemplateAlias for the control. A template alias is used to tell the Ribbon component where in the group to put the control. Each group has a set of templates, which define its layout at different scales and that contains named control references/template aliases. Since we’re hooking into an already existing group we have to use the template defined by the group (in this case the template is called Ribbon.Templates.Flexible2 and have two available template aliases o1 or o2 (you can find all this in the cmdui.xml, remember I said it was important). Each template alias has a size defined in the group template. It is important here to choose a control that can use the sizes defined in the group template and alias, since not all controls support all display modes. And as a lot of other important things, this is not something that is officially documented – so you’ll have to do some trial and testing. We’ll use the template alias o1 in this case, since it’s a good control for this feature and supports the required display modes.

In this case we’re using the default group template and aliases which works fine since we’re only adding controls to an existing group. If you create your own group, you must also define your own group template to make sure that your group is shown.

After declaring all these basic attributes, which most controls share, it is time to move on to the FlyoutAnchor specific attributes. First of all we want this control to be populated dynamically when a document in a library is chosen, so we set the PopulateDynamically to true. We also want it to be re-populated when another document is chosen, so we need to set the PopulateOnlyOnce to false.

Then we move on to the commands. The Command attribute contains the command that is executed when the FlyoutAnchor is clicked. Notice how I use the same “namespace notation” here on the commands as well, it allows for easier reading and debugging, and minimizes the risk of re-using the same command name. The last attribute is the PopulateQueryCommand, which contains the name of the command that is used to populate the control and is fired when the FlyoutAnchor is expanded. We’ll soon see how these commands are implemented in the JavaScript Page Component. The FlyoutAnchor declaration should now look like listing 2.

Listing 2: FlyoutAnchor declaration

Page 23: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

23

Create the Page ComponentOur next task is to create the Page Component that handles the commands defined by the FlyoutAnchor. A Page Component can be seen as the “code behind” for a set of Ribbon controls. To create our Page Component we’ll add a new JavaScript file to the SPI in the project. Do this by right-clicking the SPI, choose Add New Item and then select the JScript file from the Web category. Give it the name WorkflowExtensionPageComponent.js. We want this file to be deployed to the Layouts folder so we need to edit the properties of the JavaScript file and change the Deployment Type from NoDeployment to TemplateFile and also change the Path so it starts with Layouts\ and then have the name of the project, as shown in figure 3.

Figure 3: Since the JavaScript file is added to the SPI it’s important to change the deployment type to TemplateFile and update the Path to point to the Layouts folder

Why don’t we just add it to a Layouts Mapped Folder in Visual Studio 2010 you’re asking yourself right now! There is a very simple reasoning behind this. Having the files grouped together in the SPI makes it easier to locate the files and also when you’re doing housekeeping etc. you will not miss any files. It’s a matter of taste, but this way you will likely minimize the human mistakes.

In this Page Component we’re also going to use jQuery for some AJAX functionality. jQuery on the other hand, unlike the Page Component, is a file that will probably be used by multiple SPI’s – so this one will go into the Layouts Mapped Folder.

Now it’s time to implement the Page Component! It takes a lot of JavaScript just to get started, but once you’ve done this exercise it’s a copy and paste job for the subsequent ones. Listing 3 shows the default skeleton code that I usually use to get started with a Page Component – I just copy and paste this one and replace the namespaces with new ones.

Page 24: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

24

Listing 3: Javascript for Page Component

If we look at the code from top down, the listing starts with registering the namespace using the ASP.NET AJAX Type.registerNamespace method. Once the namespace is registered we can define the JavaScript class, which is done using the function keyword. Next we define the initialize function of the Page Component, which is used later on. This function registers a delegate that executes the next function (initializePageComponent) once the SP.Ribbon.js JavaScript file has been loaded. The initializePageComponent is responsible for registering an instance of this Page Component with the Ribbon using the JavaScript PageManager object.

Page 25: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

25

Following those initialization functions it is time to define the methods of the Page Component class. The init function is called when the Page Component is created.

The getFocusedCommands and getGlobalCommands return an array of command names supported by this Page Component. Focused commands are used by contextual web parts, when they are focused and global commands are used otherwise.

The getId function should return a unique name for this Page Component instance, in this case we will only have one instance at a time so it is a static string.

The canHandleCommand is called by the Page Manager to see if the command is available, if the function returns true it is available and otherwise not (which in most cases renders the control as disabled). It is in the handleCommand that the commands are actually executed.

The isFocusable function is set to always return true, to tell the JavaScript Page Manager that this control can be in focus.

The last piece in this JavaScript is to actually create the instance of the Page Component and then use the ASP.NET AJAX registerClass to register the class with the CUI.Page.PageComponent base class. I also add a custom function called createWFExtension, which we’ll be using in just a bit, that calls the initialize method of the page class.

The final row of the JavaScript file contains a call to the SharePoint 2010 Script On Demand (SOD) function, notifyScriptLoadedAndExecuteWaitingJobs, that tells JavaScripts which are waiting for the file to load that they can execute their waiting jobs.

Now that we have the outline of our Page Component it is time to implement the actual logic. The first function to implement is the init function. This function will be called when the instance is initializing and we can use it to define default and start up values. We’re going to use an ASHX Http Handler, deployed to the Layouts folder, to dynamically load the supported workflows for each selected document. To get the URL for that ASHX file we’re using the SharePoint 2010 JavaScript utilities to get the relative path to the file and store in a local variable, like in listing 4.

Listing 4: The init function

Next thing we’re going to implement is the getGlobalCommands function which returns all supported commands for this Page Component. This method returns an array of strings containing the names of the commands, as you can see in listing 5.

Listing 5: The getGlobalCommands function

The function returns the two commands that we declared in the FlyoutAnchor element and a third one, which we’ll use later to start the workflow.

Page 26: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

26

The canHandleCommand method, which is used to determine if the Page Component currently can handle the method will be used to enable the FlyoutAnchor if only one document is selected.

Listing 6: The canHandleCommand function

For the FlyoutAnchor command it will check to see if any document is available and selected and it will only return true if only one document is selected and it must not be a folder. For the other two commands it always returns true and for any unsupported commands it will return false.

The final function to implement is the handleCommand, and that method is where the magic happens. It’s quite a lot of code in this function as you can see in listing 7 and I’ll walk you through it.

Page 27: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

27

Listing 7: The handleCommand function

Before defining the function we declare three local variables; isLoading is used to determine if we’re currently loading data so we don’t invoke the ASHX file unnecessary, the currentItemId is used to remember which document we have loaded the workflows for, so that we can reload the workflows when it changes and currentData is a container for the data that is returned from the ASHX file.

The first thing we do in the handleCommand function is to retrieve the current selected item. Then we use a switch statement to select what to execute depending on the commandId argument, which contains the name of the command. The default Command does nothing and just returns true. The PopulateQueryCommand on the other hand is responsible for loading the workflow data from our ASHX handler. It will first of all check if the document has been changed and that we’re currently not loading. If that is the case we’re using the jQuery post method to send a POST to the ASHX file passing in the “GetWorkflows” action and the list item id and list id. When the POST returns we use the callback function to set the returned data to the currentData variable and indicate that we’re finished loading. Note here that we cannot use the this keyword in the callback, since we’re not in the same context once the post returns.

When the method has started the asynchronous invocation of the ASHX file we need to set the PollAgainInterval property of the properties argument. This is a special property used by the FlyoutAnchor to set an interval when it should call the same command again. In this case we set it to 100, which mean that the same command will be executed in 100 milliseconds. That’s why we have the if-statement checking if we’re currently loading or not, so in the else-statement we expect that the asynchronous call is complete and we can set the PopulationXML property of the properties argument to the value of the currentData variable, you will in just a minute see what this variable actually contains.

Page 28: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

28

The final command, which starts the workflow, is straightforward. It either shows the default start workflow initiation form, if the workflow has one, or it asynchronously kicks of the workflow using another defined action in the ASHX handler. More details on this one later on as we build the ASHX handler. One thing to notice here is how we use the SharePoint 2010 JavaScript UrlBuilder class to concatenate URLs.

Register the Page ComponentWe cannot yet deploy the solution with any success; we’re missing the glue between the Page Component and the customizations of the Ribbon. There are several ways to achieve this and one way is to make use of the delegate controls. We’ll create this control by adding a new Class item to the SPI. Modify the class so it’s a public class inheriting from System.Web.UI.Control and override the OnLoad like I have done in listing 8.

Listing 8: The delegate control’s OnLoad method

The OnLoad method will make sure that all necessary JavaScript files are loaded, including the jQuery and Page Component script files. The final thing it does is registering a SOD script that calls the createWFExtensions function in our custom JavaScript file to initialize the Page Component.

The Delegate Control must also be declared in the elements.xml file using the Control CAML element like in listing 9.

Listing 9: Delegate Control declared using the Control CAML element

Since I used the Guid attribute on the control class (requires that you add a using statement to System.Runtime.InteropServices) I can use the Visual Studio Replaceable tokens in the Control declaration to avoid manually typing in the full name of the class. This also makes it easier to refactor or rename your classes.

Page 29: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

29

There’s one more thing we need to take care of, and that is to make this control into a Safe Control. This is done by right-clicking the SPI and selecting the Properties option, then click on the ellipsis button on the Safe Control Entries row. In the dialog that appears just click Add and then OK. Since we created the class “inside” our SPI all the namespaces are correct and we don’t have to modify anything here.

By now we can actually deploy our solution, but it will not work, since we haven’t built the ASHX handler that is used to populate the FlyoutAnchor. And this is our next and final task.

Retrieving the current Workflow AssociationsAdding an ASHX Http Handler to a SharePoint 2010 Visual Studio project is not that easy, somehow the team missed out on this feature. I do like to use ASHX files for simple operations, building a full-blown WCF service is just too much trouble.

To create the ASHX file just add a new Text file to the SPI and name it WorkflowHandler.ashx. To add the code behind for the handler you should add a new Class which you give the name WorkflowHandler.ashx.cs. Just as we did with the Page Component JavaScript file we also need to set this .ashx file Deployment Type to Template File and deploy it to the Layouts folder. When you’re done with this your solution should look like in the one in figure 4.

Figure 4: By adding related files into the SPI you will get an easier to maintain solution

In the code behind file update your class to be public and to implement the IHttpHandler interface. Listing 10 shows what your class now looks like.

Listing 10: The IHttpHandler interface

Then add a Guid attribute to the class itself. Once that is done it is time to add some code to the .ashx file like I did in listing 11.

Listing 11: The WorkflowHandler .ashx file

Page 30: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

30

We’re using the Visual Studio 2010 replaceable tokens here as well, only caveat is that Visual Studio 2010 does not by default replace any tokens in .ASHX files. As always we have a solution to our problems. Just unload your Visual Studio project and select to open the .csproj file. In the first PropertyGroup element add a sub element called TokenreplacementFileExtensions. This element contains additional file extensions to parse for tokens to replace.

Listing 12: The TokenreplacementFileExtensions element

Now it’s time to create the code that populates the FlyoutAnchor! The ASHX code behind that implements the ProcessRequest method is shown in listing 13.

Page 31: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

31

Listing 13: ASHX code behind that implements the ProcessRequest method

This custom ASHX handler accepts a couple of parameters, through the Request.Forms collection. The action parameter specifies what operation to execute – to return all available workflows for the specified item the action “GetWorkflows” is used. When this action is received it will create Ribbon XML using the Menu element. This menu will have two sections (MenuSection elements); where the first one contains list workflows and the second one contains content type workflows. Each workflow will then be represented by Button elements. Once the menu is complete it will use an XmlTextWriter to write the XML to the OutputStream of the Response object. This XML is then picked up by the Page Component and copied to the PopulationXML property, which was implemented earlier.

The Button controls are generated by the private method in listing 14.

Listing 14: Generated Button controls in private method

Each workflow association will have its own button and each button uses the same Command – this was the third command that we specified in the Page Component. The ID of the Button is set to the ID of the workflow association and both the MenuItemID and CommandValueID is set to the InstantiationUrl of the workflow association. We need to set both of these values to actually get a value back in the JavaScript objects! If you take a look back into the Page Component you will see that it if the CommandValueId has a value it will open a modal dialog and show the instantiation page of the workflow, and if not it will post back to the ASHX handler with the action “StartWorkflow”.

Page 32: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

32

Figure 5: A workflow with an instantiation form will open up in a modal dialog when started from this custom Ribbon control

Starting the WorkflowIf the workflow doesn’t have an instantiation form then the Page Component uses jQuery to call into the ASHX handler with the “StartWorkflow” action. Listing 15 shows how to implement this in the ASHX handler class’ switch statement.

Listing 15: Switch statement in the ASHX handler

The code will first try to see if it’s a content type workflow association and if it’s not it assumes it is a list workflow association. Finally it uses the workflow manager to kick of the workflow.

Page 33: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

33

Where to go from here?This sample is far from complete – you can extend it further. For instance there is not enough error checking or checking for permissions. The permissions check would be ideal to use in the canHandleCommand to enable or disable the FlyoutAnchor. You can also very easily extend the JavaScript and ASHX handler to be able to work with multiple items. I bet your customer would be glad if they could fire off a workflow on 20 documents in one click compared to about three or more clicks per document. Another nice addition could be to indicate to the user if a workflow currently is in flight and cannot be started. It’s all up to you…

ConclusionThis was a quite long sample with extensive code samples, but I hope you enjoyed reading it. A lot of this code is code that you write once and reuse over and over. There are a lot of pitfalls when customizing the Ribbon, so make sure that you are thorough, don’t misspell anything, clear your browser cache often and understand the different controls and their differences (SharePoint is well known for having different implementations for basically the same stuff). Good luck!

Page 34: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

34

THE DIWUG eMAGAZINE

The SharePoint eMagazine is a periodically issued eMagazine for SharePoint specialists in the domain of development, IT-pro and no code solutions by power users. The authors, members of the SharePoint community, are from all over the world and are mostly well-known MVP’s or MCM’s.

The eMagazine is free and can be downloaded from the DIWUG site. On average each edition of the magazine is downloaded about 10.000 times. The eMagazine comes in pdf format in two versions: Adobe® Acrobat® Reader and eReader. Both versions contain the same info and ad’s.

YOUR AD

1. Your ad will be placed among the articles, not in a commercial cluster vulnerable to deletion.

2. Your ad will be placed in both versions. Even eReader users will note your message.

3. Your name will be mentioned in the list of sponsors at page 3 with a direct link to your ad (not supported by all eReaders).

4. Your ad will be linked to your website (not supported by all eReaders).

DIMENSIONS & PRICES (VAT EXCL.)

1/1 page = 210 x 297mm (A4) € 1,000.00

1/2 page = 210 x 148mm (A5 horizontal) € 500.00

1/4 page = 210 x 74mm (horizontal) € 250.00

25% reduction when ordering 3 ad’s of the same size.

Insertion of these three ad’s in one, two or three issues at your will.

For more information, please have a look at http://www.diwug.nl and contact Marianne van Wanrooij: [email protected] or Mirjam van Olst: [email protected]

WHY YOU SHOULD

Page 35: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

35

The iPad and SharePointby Jasper Oosterveld

The iPad is the most popular tablet in the market today. Companies are eager to deploy the iPad among their staff or let them use their personal iPad (‘bring your own device’ policy). The main goal seems to be to reduce the use of paper and improve collaboration. There is another

very popular product, we of course all love, called SharePoint. How do these two products work together? Are there any 3rd party applications that businesses might need? What can companies

accomplish by integrating the iPad in their business in combination with SharePoint?

Out-of-the-box integrationI can access any SharePoint (also SharePoint Online 2010) site by using the iPad Safari browser. In figure 1 you can see an example of what a SharePoint site looks like in the Safari browser on the iPad.

Figure 1: A SharePoint site opened in the Safari browser on the iPad

I am able to create new items such as announcements or tasks. It’s not possible to add documents or pictures because the iPad hard drive is not compatible. This option will be greyed out in both libraries. The ribbon, one of the greatest improvements in SharePoint 2010, is also available.

Figure 2: The SharePoint ribbon in the Safari browser on the iPad

Page 36: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

36

The ribbon works really well on the iPad. I am able to create and edit items, change the library or list view and even create new columns. I created a new column called Category, and when I attach this column to a new announcement I get a nice pop-up where you can pick the category. This works really intuitive.

One of my favourite features of SharePoint is creating tags and notes. Does this work with the iPad? Yes it does. I can create tags and leave notes. The My Sites show my tags and notes and I can open the tag profile page to leave a message for my co-workers. You are probably curious what the My Site looks like? See for yourself in figure 3.

Figure 3: The My Site in the Safari browser on the iPad

I did have a lot of credential issues with the My Site because I had to re-enter my credentials multiple times. This got pretty annoying after a while. The My Profile page works fine. I can leave a status update or edit my properties. I am not able to change my profile picture because there is no possibility to select a picture from the iPad. I would advise you to use your laptop/desktop to change your profile details.

The organization tab won’t show the Silverlight organizational chart because there is no Silverlight available for the iPad. You will be presented with the HTML view. It’s also easy to perform a search. You are presented with a nice pop-up with the different search scopes. Figure 4 shows you that the search result page looks the same as what you are used to.

Figure 4: The Search Results page in the Safari browser on the iPad

Page 37: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

37

You can use the refinement panel to reduce the search results and click on a Word document so it opens in the browser. Again I did have a lot of issues with the credentials pop-up. I had to re-enter them every time I clicked on a search result. This is pretty frustrating and not user friendly.

Until now everything has been pretty positive. I am able to browse, relatively easily, through the portal. The only main issue with browsing is that clicking on the link to a site in the top navigation, which has sub sites, does not work. You will click at the top site and the site will load because the drop down menu loads too late. I can create new items and use the My Site and even search for content. The main use of an iPad with SharePoint will be working with documents. How does that hold up? Not too well I am afraid.

Microsoft WordIt´s pretty easy to open a Word document in the browser. You will only receive an installation notification for Silverlight but are still able to open the document in edit mode. The problem starts when you want to add or edit text. I am able to add text but when I want to edit the text, for example marking it yellow, nothing happens. The interface is also pretty unstable. The keyboard sometimes does not appear, in which case you have to close and reopen the document again.

Microsoft ExcelThe Excel sheet opens nicely in the browser just like the Word document. I am able to add and edit text. That works smoothly. The major problem occurs when I want to scroll below row 28. That is just not possible. The screen won’t go any lower.

Microsoft PowerPointJust like the previous document types it’s easy to open a PowerPoint document and you are able to browse through the content. This is probably getting repetitive by now but editing the PowerPoint presentation has the same issues as the Word and Excel documents do. I am not able to add pictures or work with bullet points. I also can’t mark text. This is again a pretty disappointing experience.

Microsoft OneNoteThe last one up for the test is Microsoft OneNote. This is the ideal application for creating notes during meetings. The iPad is also becoming an employee’s favourite gadget during meetings and wouldn’t this be a great marriage? I am afraid a divorce is bound to happen because it’s just not working out. When trying to use OneNote I get multiple errors and I have to restart OneNote. Even adding new text is very frustrating and often not working as expected.

I can easily conclude that viewing Microsoft Office documents is working fine with the Safari browser. Just make sure that your Excel sheet does not have more than 29 rows (a little bit of sarcasm here). It starts to get unworkable when you decide to edit the documents. This simply doesn’t work, which brings us to the next topic: 3rd party solutions.

3rd party solutionsI hope you did not lose faith in the iPad and the combination with SharePoint at this point because there is still hope! I had the pleasure of working with a couple of great iPad applications to solve most of our problems. There is an alternative for using the Safari browser called SharePlus.

SharePlus makes it possible to connect with SharePoint portals. You have a couple of authentication modes:

Windows Based

Form Based

Office 365

Web Login

Page 38: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

38

The Office 365 mode is great because this means that you can connect to a SharePoint Online 2010 portal. We have a lot of customers that use SharePoint Online so this is a great option. Unfortunately there is no claims based mode at this point. I was told that this option will be available by the end of 2011.

It’s easy and straightforward to setup a connection to a SharePoint portal. After I enter all the correct details and click on the newly created SharePoint site the screen displayed in figure 5 will appear.

Figure 5: A SharePoint Online 2010 site opened in SharePlus

I am presented with a nice overview of all the subsites and lists. These are of course security trimmed. I can click on Calendar to see the team events:

Figure 6: The Calendar view of a SharePoint site as displayed by SharePlus

The calendar view resembles the view you are used to from the browser. This works similar for every list or library. I can change the view or the sorting and grouping of metadata. These options are available in the bottom of the screen. The configuration

Page 39: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

39

of sorting and grouping works with a really nice drag and drop functionality. I am guessing you are mostly interested in the interface for Office documents. By clicking at Shared Documents I can see the current documents.

Figure 7: A document library view in SharePlus

The documents are presented with the All Documents view. Unfortunately you cannot create a new view from SharePlus but you can edit the view if needed. You can browse through the document by scrolling up and down with your fingers. There is a problem with documents that contain tables and custom lay-outs. The design is messed up in the SharePlus viewer. This is not a major problem because you are only reading the document but it would be nice if this gets fixed in the future.

I can perform a couple of actions. I can e-mail the document or send the document to another application. I use “Documents to Go” to edit Office documents, but there are more applications in the App store such as Pages or Quick Office.

Real world scenarioIn the introduction I talked about how eager companies are to deploy the iPad and to use it with SharePoint. One scenario that immediately comes to mind is using the iPad during meetings. There are still a lot of people who print out meeting documents and create notes on those documents. These notes are handed out to a poor secretary who needs to type out the hand written notes and send it to the manager. This can work a lot easier by using the iPad and SharePoint.

To digitalize this process we need have a SharePoint portal where the meeting documents are going to be stored. You can create a central site called ‘Company meetings’. This site contains multiple personal document libraries for every manager. These libraries should only be accessible to the managers and their related secretaries. The personal library can be used to store meeting documents with notes. The site can also contain multiple meeting sites for recurring meetings. These sites contain the original meeting documents. The manager would not want other people to read his or her notes.

The manager can view the documents, in the meeting site and personal library, with SharePlus. To create notes I don’t prefer using Documents to Go. A good solution for this is to export the documents to the application iAnnotate. The documents are converted to PDF. After opening iAnnotate you get the view that is displayed in figure 8.

Page 40: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

40

Figure 8: A document opened in iAnnotate

By using the right side of the screen you can create notes, mark text or write text. The meeting document can now be send by using the e-mail or send back to SharePlus! The PDF is saved in the Local Files and can easily be added in any location within SharePlus, just like in the example in figure 9.

Figure 9: Notes added to a document using iAnnotate

You need to turn on the experiment settings in iAnnotate before you are able to load files from SharePlus. There is another important fact. The PDF needs to be saved with the Flattened setting. This means you cannot make any more changes from SharePlus in the PDF.

ConclusionThe iPad is a great and revolutionary device but is the integration between the iPad and SharePoint good enough for it to be useable in people’s day to day work? Yes and No. There is still a lot to be done. The out-of-the-box support for SharePoint is fine for browsing but working with documents is just a disaster. I am still positive because of third party applications like SharePlus and iAnnotate. These applications are really helpful and can support many business needs. It will be very interesting to see what the future is going to bring us with regards to the iPad and SharePoint integration.

Page 41: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

41

Integrating SharePoint Online 2010 & Windows Azure

by Andrew Connell

This article will discuss the advantages and options for customers leveraging SharePoint Online in Office 365 and Windows Azure. Developers will need to overcome some

authentication challenges when connecting to SharePoint Online from Windows Azure as demonstrated in this article.

Office 365 and SharePoint OnlineIn 2011 Microsoft launched a new product offering, Office 365, which provides hosted Exchange, Lync and SharePoint capabilities for customers. This hosted model allows customers to get the benefits and rich features offered by these three products without having to incur the expensive up-front costs of procuring hardware and software licenses as well as training an IT staff to install, configure and maintain the environment on a day-to-day basis.

One aspect of Office 365 is the ability to create numerous site collections within SharePoint Online. SharePoint Online is a deployment of SharePoint 2010 and contains most of the same features you find within a SharePoint 2010 deployment on-premise. There are different pricing plans available that give you different features of SharePoint Online, check the following article on MSDN for a matrix of what each pricing plan gives you: SharePoint Online Developer Feature Availability Matrix (http://msdn.microsoft.com/en-us/library/gg454742.aspx).

Historically SharePoint has been very popular with large organizations because they can shoulder the financial and resource requirements required to deploy SharePoint. However one place where SharePoint hasn’t grown as fast is in the small and medium size business (SMB) area. The reason for this is most likely the cost and resource requirements necessary to deploy it. With Office 365, many of these barriers have been removed and therefore it represents a new era and opportunity to grow the SharePoint customer base. Because of that this is an area you should be very aware of and should learn how you can best leverage and exploit this new and untapped market of possible SharePoint customers!

SharePoint 2010 includes a new capability that enables developers to create custom solutions and deploy them to site collections without involving administrators. These sandbox solutions are limited in some things they can do, as they allow developers and site collection owners to deploy code directly to the server without administrator checks and balances. Sandbox solutions are the only way developers can create custom solutions and deploy them to a hosted environment such as Office 365. Microsoft does not allow fully trusted (aka: farm trust) solutions in Office 365 as they can’t review every solution nor is it appropriate for the stability of the farm.

As sandbox solutions are the only developer option for custom solutions in Office 365, developers should be aware of what things they can and cannot do in sandbox solutions. The following article on MSDN provides a good set of guidance to understanding what you can and cannot do within the sandbox: SharePoint Online for Office 365 Developer Guide (http://msdn.microsoft.com/en-us/library/hh147180.aspx).

In addition to the limits imposed by the sandbox, Microsoft has incorporated some additional limits on Office 365. Unfortunately not all of these limitations are documented at the time of this publication, but the following article on MSDN does provide good guidance to working in the hosted SharePoint Online environment: Developing SharePoint Online Solutions (http://msdn.microsoft.com/en-us/library/gg454741.aspx). In addition to the support Microsoft has provided, the community

Page 42: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

42

has developed an open source project on CodePlex that consists of documentation and FxCop rules you can use to check your code before deploying to the sandbox. It includes all the known limitations as well as those limitations found by customers but not yet documented clearly by Microsoft: Office365 Sandbox FxCop Rules(http://o365fxcoprules.codeplex.com/).

Using Windows Azure to Break out of the SandboxWhile the sandbox gives developers an option for creating custom solutions in the cloud, the fact remains that it can be somewhat limiting. Some tasks developers are used to doing on the server in a fully trusted environment are simply not permitted in the sandbox. For instance developers cannot create custom web services or make calls to custom databases. While these limitations do exist, there are various ways to get around them when in a hosted scenario.

One option to consider is leveraging Windows Azure, Microsoft’s cloud solution. Both Office 365 and Windows Azure run in the same data centers so communication between the two environments is nice and quick. In addition, Windows Azure does not impose the same limitations on custom projects that the sandbox does. In many cases, Windows Azure even adds additional capabilities that are not offered in SharePoint, either on premise or in the cloud.

Microsoft’s cloud offering is comprised of various components. The following list is a brief overview of some of the things you’ll find in Windows Azure:

Windows Azure - The ability to run custom code in the cloud. For instance you can write web applications or services using the .NET Framework (even version 4) or non .NET languages such as PHP. It also includes storage such as blobs (for files), tables (for data) and message queues.

SQL Azure - The ability to create cloud hosted relational databases. Microsoft is adding business intelligence capabilities here as well, such as reporting and analytics.

Windows Azure AppFabric - AppFabric is a suite of middleware services you can use to extend your application. It enables your application to securely connect to backend services (ServiceBus), implement caching capabilities (CDN, caching) and authentication (Access Control Service).

The possibilities for how you can leverage SharePoint Online in conjunction with Windows Azure are interesting and significant. For example, if you are working with large files, such as video or CAD files, it may be cheaper to store these files in Windows Azure Blob storage than using up your valuable site collection content database space. Depending on the application, you can leverage individual components in Azure or host the entire application within Windows Azure… it just depends on the project!

When exploring creating a project that will have a presence in SharePoint Online as well as one in Windows Azure, there are two things you need to figure out: how will SharePoint Online surface/communicate with Windows Azure and how will Windows Azure communicate with SharePoint Online.

SharePoint Online Connecting to and Surfacing Content from Windows Azure

Let’s first look at the SharePoint Online side of the equation. Because all custom code is relegated to running in the sandbox you are limited in what you can do. Unfortunately you cannot make remote calls to custom services in Windows Azure. However one very simple technique would be to create a sandboxed Web Part that simply rendered an IFRAME control to the page with a 0 pixel border and whose source pointed to the URL of a page in a web project hosted in Windows Azure. Yes,

Page 43: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

43

this may seem like you are cheating as it’s so simple, but your users wouldn’t know the difference as the content would not easily appear as if it is coming from different applications.

Another option would be to move the SharePoint Online application to the client. Using either JavaScript or Silverlight, you can issue web service calls to custom services you develop and host in Windows Azure. The code sample in listing 1 demonstrates how you could do this using JavaScript to call a WCF Data Service hosted in Windows Azure.

Listing 1: Consuming OData Services via JavaScript

Now let’s take a look at it from the other side: connecting to SharePoint Online from Windows Azure. Unlike the limitations imposed by the sandbox with SharePoint Online, solutions running in Windows Azure can make unrestricted calls to any external service. This means that your custom code can establish a connection with SharePoint Online using any of the methods provided by SharePoint 2010 that enable external communication. These options include the following:

Client Object Model (CSOM): This is an extension of the server side object model developers can use to connect to sites and site collections to not only read & write to SharePoint lists, but also do a lot of other management tasks such as manage permissions, create sites and lists or work with site columns and content types.

ListData.svc: This service a WCF Data Service otherwise known as an OData service enabling RESTful calls to perform CRUD-Q operations on data in SharePoint lists.

Web Services: These include the traditional web services such as the lists.asmx service or others that expose things such as user profiles and search.

Web Requests: These are traditional web requests using the .NET Framework’s WebClient, WebRequest and WebResponse objects which are useful when downloading files from SharePoint.

Before you can get access to the data that resides in SharePoint Online from Windows Azure or perform any other type of task with the CSOM, you first have to authenticate. This may not be as straightforward as you expect because of two simple facts. First, SharePoint Online and Office 365 employ claims based authentication and require you to login using a Microsoft Online account. The other challenge is that many of the remote access methods previously mentioned are not claims aware by default and thus will require some extra work.

In order to use one of these methods you need to first authenticate with Microsoft Online and get a SAML token, the authentication “ticket” that is used in claims based authentication scenarios. Once you have the SAML token you need to pass it along

Page 44: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

44

in every request to prove your authentication status. The challenge is that the above approaches don’t include a straightforward or obvious way of passing the token. However it is entirely possible in all four cases.

Authenticating to Microsoft Online and extracting the SAML token requires a bit of work. A lot of what is required is outlined in Steve Peshka’s blog (http://blogs.technet.com/b/speschka), but thankfully Wictor Wilen has published a helper class (http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx) to extract the SAML token from a request. Using this code sample, we first authenticate with Microsoft Online by passing in the username, password and the URL of the root site collection you want to connect to in SharePoint Online.

Once you have authenticated, you can create the CSOM ClientContext like you would normally create to connect to any other SharePoint site. The trick though is that you want to configure it to inject the SAML token whenever it makes a further Web request. Thankfully there’s an event, ExecutingWebRequest, you can trap and add the SAML token to the WebRequests’s CookieContainer property. Now most calls to SharePoint via the CSOM will include the SAML token.

Listing 2: Authenticating to Microsoft Online and configuring the client context

Page 45: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

45

Handing Edge CasesWhile the technique outlined on the previous page works for most CSOM calls, it doesn’t work for some others. For instance the File object in the CSOM has a method OpenBinaryDirect() that you can use to read a file from SharePoint, like in a list attachment or document in a document library. Unfortunately this method doesn’t raise the event we just handled and thus, it won’t work in a claims environment.

In this case if you need to download a file from SharePoint Online, you’ll need to create a special WebClient object like in listing 3 that lets you include the SAML token in the request, similar to what you just did with the CSOM ClientContext.

Listing 3: Custom Claims Aware Web Client Class

Now, you just use listing 4 to enter the URL of the file and include the SAML token in the cookie.

Listing 4: Using the Custom Web Client Class

ConclusionIn this article we explored how you can use Windows Azure to extend the custom solution options available to developers when creating solutions in SharePoint Online, and how to address the inherent Authentication challenges. The sandbox is the only development option within SharePoint Online and can be somewhat limiting in different scenarios. However when you consider different ways you can extend your application by building components or all of your application in Windows Azure, you will find you can break down those walls and create very compelling solutions!

Page 46: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

46

SharePoint: productivity might be delivered but have you thought

about governance?by Sjoerd van Lochem

The SharePoint Conference in Anaheim revolved around the theme “Productivity delivered”, this was backed up with solid research. More and more large corporations are deploying

large SharePoint environments, giving rise to the question: how should the governance of SharePoint be organized? This article introduces the extended governance framework. The framework intends to shift governance from a technology focus on throttles, controls and

design principles to a more holistic approach.

Larger deployments and the need for governanceWith the release of SharePoint 2010, the community focused on the question whether SharePoint was truly enterprise ready. During the launching days, the focus lay on exploring these new enterprise capabilities (evolved and/or added functionality such as ECM capabilities), developer productivity (debugging, VSTO2010 support for SharePoint 2010) and improved scalability/performance/reliability (throttles, service architecture, failover, deployment).

Research from Gartner and Forrester shows that SharePoint is the market leader in collaboration and portal capabilities and a challenger for ECM and DMS vendors. Large enterprises have taken notice and are adopting SharePoint in great numbers. Resulting in SharePoint’s meteoric rise as THE enterprise collaboration portal and Microsoft proudly presenting the SharePoint Conference in Anaheim with the slogan “SharePoint, productivity delivered”.

As all other Microsoft products, SharePoint is a flexible tool. Microsoft intentionally designed the product to offer functionality that is easy to use and to configure and that offers flexibility in being adjusted for business users and ad hoc initiatives. This flexibility is a double edged sword: its major strength as well as a cause for concern. IT departments find it difficult to design, develop, deploy and maintain SharePoint environments due to the flexibility offered to business users and the broad capabilities of the product. We have seen environments growing and evolving very rapidly, making it extremely difficult for IT and content owners to keep up. The increased size and complexity has given rise to a greater need for governance.

Governance means regulation and controls. Ultimately, governance is aimed at keeping SharePoint flexible and maintainable at a corporate level, but in practice this will limit the individual flexibility of single business users. We are witnessing the birth and adoption of cloud technologies and an ongoing consumerization of IT. This trend plays into the hands of users shopping for ready to use functionality that is fast to deploy in their home environment. At the office, these users expect the same flexibility from their corporate IT systems (SharePoint). If IT does not deliver, they often revert to the cloud in search of their own solutions. This leaves IT departments with a dilemma: rigid governance controls could drive business users in search of finding “do-it-yourself” solutions, leaving them beyond IT’s protective boundaries. Striking the proper balance between governance and the flexibility offered to end users is proving quite a challenge.

Page 47: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

47

The extended governance frameworkThe SharePoint community finds itself in unfamiliar territory: in need of governance practices and a governance model. There are many different opinions and models that deal with governance. We will discuss the extended governance framework. The framework intends to shift governance from a technology focus on throttles, controls and design principles to a more holistic approach.

The extended governance framework covers two dimensions:

Scope

The scope of the governance effort can be either narrow or more holistic. When we talk about technical governance controls within SharePoint, we address governance at the product level, for example throttles, site collection storage templates, maximum database sizes and SharePoint programming standards.

As we broaden the scope, we place SharePoint within a landscape of its users/usage and related IT infrastructure/systems. For example, guidelines on what information to include in user profiles, procedures for requesting/ providing sites and the role of a governance board.

We can broaden SharePoint’s governance scope even further by asking how corporate strategies, IT strategies and SharePoint strategies are aligned. For example the discussion whether the IT governance board should govern SharePoint or whether SharePoint’s social features support the corporate identity.

Technology, processes and organization

Governance can consist of different aspects. A technology focus addresses technical measures, infrastructure and IT Architecture in general.

A process focus looks at the system from a process orientation and addresses the question how processes can enforce governance measures. For example how can we request new workspaces, how are change requests processed. The organizational perspective focuses on the organization of governance (for example which roles are embedded in the governance board, the implementation of governance within the user organization and the division of administrative tasks).

Page 48: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

48

Common practice is to try to govern specific issues by using technology (for example storage templates and denying users site collection ownership).

When technology alone is not sufficient to address an issue, processes can be formalized to enforce certain governance issues (for example users should formulate the intended application of a site that they request. Based on this information, an administrator selects a site template that is used to provide the requested site). And as a last resort, governance can be achieved by organizational methods. For example users are trained on how to select appropriate functionally by explaining the application of each site template.

Using the extended governance frameworkThe framework described offers flexibility to address each level and aspect with a variety of governance models, theories and instruments. Most product and technical governance models are prescriptive in nature. A prescriptive model is normative by suggesting one way of doing something (the norm). A good example of prescriptive governance controls is “SharePoint Server 2010 capacity management: Software boundaries and limits” which is available from TechNet. At the Anaheim conference, Spence Harbar held an insightful session about governance and another in depth session on the prescriptive technical governance controls at the product level.

Descriptive models and theories are more common at the business level. A descriptive model describes how something functions and is being organized. For example whether the governance board is a type I, being more top-down, or type II, focusing from the bottom-up.

The extended governance framework is intended to shift the focus from a product and technical viewpoint to a more holistic approach. Most governance efforts are intended to protect the SharePoint deployment from performance and security degradation. The extended governance framework is intended to extend the scope of governance to underlying issues: how are business requirements continuously aligned with IT/SharePoint capabilities (functionality, storage, maintenance, etc.). Though this applies to most IT applications and systems, it is especially relevant to SharePoint because of its flexibility and end user orientation.

This brings us to the most obvious question about the extended governance model: Should all levels and all aspects be addressed in all governance plans? In our opinion it is a descriptive model and only the relevant elements (in your own context) that are subject to rising governing issues should be addressed in the governance plan. However, it is advisable to take a model like the extended governance framework and to describe which elements are relevant in the situation at hand.

A holistic governance approach to SharePoint will ensure that your environment is adaptive and maintainable and will support changes in its usage and business requirements (within the designed flexibility limitations).

Page 49: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

49

Page 50: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

50

Real World Service Application federation with SharePoint 2010

Part Oneby Spencer Harbar

One of the most powerful new infrastructure capabilities in SharePoint Server 2010 is that of Service Application Federation. Enabled by the new Service Application

architecture, Service Application Federation allows the “publishing” of some service applications across farms. This ability provides a significantly improved model for flexible

deployment allowing SharePoint 2010 to scale much further than previous versions, and to enable some interesting and powerful scenarios not possible in the past.

This article will cover the basic capability along with a walk through of the required configuration. A second article in a future DIWUG eMagazine will cover high availability,

security, enterprise deployment considerations and more details on the design constraints which are fundamental to successful deployment.

What is Service Application Federation?Service Application Federation is the ability to share service applications across farms. It is commonly also referred to as “Publishing a Service Application”. By publishing service applications, a number of potential benefits can be realized.

Optimize Resources

In large scale corporate deployments it can be possible to optimize the server resources used to support the deployment by centralizing a “services farm” and thus this farm’s resources can be managed independently.

Avoid Redundancy

A central “services farm” which provides services to multiple “content farms” can also help to avoid duplication of services and data, and thus avoid redundancy in the overall deployment.

Minimize Administration

If a “services farm” is deployed this can be a single point of service administration across the deployment, and significantly reduce the overall administration burden from an IT perspective.

Increase Scalability

By leveraging “services farms” SharePoint 2010 can scale past the boundaries of a single farm to enable truly enterprise class deployments and improve geographically distributed deployments. Well-designed service/content farm deployments can also more rapidly respond to business needs over the lifecycle of the deployment.

Figure 1 presents a sample scenario where a shared “enterprise services farm” provides services to multiple content farms, some of which also host local services.

Page 51: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

51

Figure 1: Example Scenario

As you can see from the above scenario this capability offers huge flexibility. However a key drawback is the additional complexity. Service application federation is one of the greatest examples of “Just because you can, doesn’t mean you should”, and many practitioners have fell into the trap of implementing it without solid business requirements because the technology is “cool”, leading to numerous problems operationally. This has become known in the field as “spaghetti architecture”.

Therefore one should take time to validate that service application federation is the right approach for your deployment, and avoid at all costs doing it for the sake of it! Some of the most common, good, reasons to implement are:

Consolidate commonly used services across the enterprise

Secure and separate service data from content

Delegate management of services to a different department or organization

Differentiate support policies between content and services

Requirements and Design ConstraintsThe following service applications can be published across farms:

Business Connectivity

Managed Metadata

User Profiles

Search

Secure Store

Web Analytics

All of the other service applications must be hosted on the consuming farms should they be required. It is worth noting that not all service applications can be published over the Wide Area Network (WAN). UPA, Secure Store and Web Analytics are NOT supported over the WAN, and BCS will only be suitable depending upon the latency of the connected data sources.

For farms in multiple Active Directory Domains, a two way trust is strongly recommended. Most services will work with a one way trust, but UPA requires a two way trust. Other services such as MMS will work with no domain trust at all.

Page 52: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

52

A SharePoint Farm trust is required between the services farm and the consuming farm(s). This trust is based upon three certificates:

Root certificate: To sign the SharePoint STS & SSL Certs

STS certificate: To sign claims tokens

SSL cert: To encrypt service requests over HTTPS

For two farms to trust each other the publisher must trust the consumer’s STS certificate and each farm must trust each other’s Root certificate. The trusts are configured inside SharePoint.

We also require permissions configured on the service applications themselves to enable connectivity, and provide for granular connection rights to consuming process identities.

Example Environment OverviewTo provide an overview of the configuration, this article presents an example environment consisting of four servers.

CONDC1: Domain Controller for the contoso.com domain

CONSQL1: SQL Server hosting all SharePoint databases

CONSP1: SharePoint Server 2010 Farm (Services Farm)

CONSP2: SharePoint Server 2010 Farm (Content Farm)

All machines are in the contoso.com domain, but use different service account identities for each SharePoint Farm. Each farm has been configured with core services (State and Usage)

In the Services Farm the following service applications have already been created and will be the ones which are federated:

Business Connectivity Service (BCS)

Secure Store Service (SSS)

Managed Metadata Service (MMS)

User Profile Service (UPA)

SharePoint Server Search (Search)

In the Content Farm, a single Web Application has been created, http://intranet.contoso.com/. And this is part of the default proxy group.

With this base infrastructure in place, we can go ahead and configure our environment to publish and consume service applications.

Configuring the Farm TrustTo configure the Farm trust between the Services Farm and the Content Farm, we need to exchange certificates. The export of the necessary certificates can only be performed via Windows PowerShell.

First we will export the Root certificate and the STS certificate from the Content Farm (CONSP2) using the Windows PowerShell in listing 1, saving them to the C:\ drive.

Listing 1: Exporting Root and STS Certificates

Page 53: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

53

Next, we will export just the Root certificate from the Services Farm (CONSP1) in listing 2.

Listing 2: Exporting Root Certificate

Next, we copy the Root and STS certificates from the Content Farm to C:\ on the Services Farm, and copy the Root certificate from the Services Farm to C:\ on the Content Farm.

Now we can establish the trust on the Services Farm by importing the Root and STS certificates. Note the name provided, this is important as we will see later.

Listing 3: Establishing Trust (Services Farm)

We can verify the configuration at this stage by navigating to the Manage Trust page within the Security section of Central Administration. Note that we could have chosen to establish the trust by using Central Administration.

Figure 2: SharePoint Trust Relationships (Services Farm)

Note that the Name is that which was provided for the two certificates (which must be the same). Also note that the Type is Trusted Service Provider. In other words, this Farm provides services to the Content Farm.

Next we can establish the trust on the Content Farm by importing the Root certificate.

Listing 4: Establishing Trust (Content Farm).

Once again we can verify the configuration in Central Administration as you can see in figure 3.

Page 54: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

54

Figure 3: SharePoint Trust Relationships (Content Farm)

Note that the Name is that which was provided and that the Type is Trusted Service Consumer. Many scripts on the Internet will use the same name when establishing the trust on each Farm, which of course can lead to confusion.

Configuring Topology Service PermissionsBefore we can consume a published Service Application the consuming farm must have permissions to the publishing farm’s Topology service application. If we don’t perform this step, we receive a generic “unable to connect to the specified address” when connecting.

First we grab the Farm ID on the Content Farm (CONSP2) with the Windows PowerShell script in listing 5.

Listing 5: Exporting Content Farm ID

After copying the resultant file to the Services Farm, we can then grant it permissions to the Topology Service Application as we do in listing 6.

Listing 6: Adding Content Farm ID permissions on the Services Farm Topology Service Application

We can validate this configuration from Central Administration by viewing the Permissions of the Application Discovery and Load Balancing Service Application. Note that we could have chosen to enter the Farm ID in this dialog manually.

Page 55: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

55

Figure 4: Topology Service Permissions (Services Farm)

Publishing Service ApplicationsThe next step is to publish the service applications so we can then connect to them from the Content Farm. We can do this either via Central Administration or Windows PowerShell. First let’s take a look at using Central Administration. From the Services Farm we navigate to Manage Service Applications. Then we select the service application we wish to publish, and click the Publish button on the ribbon. The example in figure 5 shows the Business Data Connectivity service application.

Figure 5: Manage Service Applications (Services Farm)

This brings up the Publish Service Application dialog which allows us to configure the Connection Type (HTTP or HTTPS), whether the service application is published, and some informational text which will be displayed to consumers. The important part here is the Published URL which we need to copy so we can use it later on when connecting to the service. Once we hit OK, the service application will be available to the Content Farm.

Page 56: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

56

Figure 6: Publish Service Application (Services Farm)

We should follow the same steps to publish the other service applications. Remember to copy the Published URL for each service application and save those URLs in a text file and copy the file to the Content Farm (CONSP2) for later use.

We can also use Windows PowerShell to publish a service application as shown below with the Managed Metadata service application.

Listing 7: Publishing a Service Application using Windows PowerShell

However the Publish-SPServiceApplication cmdlet doesn’t provide us with the Published URL directly. This as it turns out isn’t necessary, as we’ll see later.

Connecting to Service ApplicationsThe next step is to connect to the published service applications in the Content Farm. Again, we can do this either using Central Administration or Windows PowerShell. On the Content Farm, navigate to Manage Service Applications and click the lower portion of the Connect button (the area with the text label and downwards arrow).

Figure 7: Manage Service Applications (Content Farm)

Notice that the drop down presents a list of types of service application proxies. Unfortunately Central Administration isn’t smart enough to understand which service applications can be published and simply shows a list of all types, including those that cannot be published.

Page 57: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

57

If we click the Business Data Connectivity Service item the Connect to a Remote Service Application dialog will appear. This dialog asks us to enter the Published URL of the remote service which we saved to our text file earlier. We need to take care when pasting in a URL here, it must not contain any leading or padding spaces. If we go ahead and enter the BCS Published URL, after a short delay the dialog will refresh and we will see the remote service application.

We need to select it by clicking the entry which will turn it yellow. Then we can click OK to add the published service application to the default proxy group as you can see in figure 8.

Figure 8: Connecting to a Remote Service Application (Content Farm)

If we attempt to paste in the Published URL of a service application which is NOT the BCS it will fail to retrieve the service application and the warning in figure 9 will be displayed.

Figure 9: Failure Connecting to a Remote Service Application (Content Farm)

As you can see, this UI is extremely fiddly. A much better way is to not pre-select the service application type and simply hit the top portion of the Connect button on the Manage Service Applications page. This will bring up the same Connect to a Remote Service Application dialog. However this time we can enter the URL of the Services Farm Topology Service (https://consp1:32844/Topology/topology.svc).

Figure 10: Connecting to a Remote Service Application using Topology URL (Content Farm)

Page 58: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

58

This time all published service applications from the Services Farm are displayed. However we can only select one at a time, so we need to repeat this process for each service application. It is easier than using the individual Published URLs however, and we only need to know the Topology URL.

Figure 11: Connecting to a Remote BCS Service using Topology URL (Content Farm)

Once we click OK, we are prompted to name the Connection Proxy. It is a good idea to accept the default name provided which includes a prefix of “Connection To: Name of remote Service Application”. This is a good naming convention to use and makes it easier when working with Windows PowerShell.

Figure 12: Connecting to a Remote Service Application (Content Farm)

Once we click OK, after a short delay a success message will be displayed. Clicking OK again will dismiss the dialog and Manage Service Applications will be refreshed and we will see our new connection listed.

Figure 13: Manage Service Applications (Content Farm)

Page 59: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

59

Listing 8: Connecting to a Service Application using Windows PowerShell

Note that we pass the Topology URL to Receive-SPServiceApplicationInfo using the FarmUrl parameter, and use a pipeline to select the Services Farm MMS. We can then use the New-SPMetadataServiceApplicationProxy with the $publishedServiceApp variable.

We can retrieve all possible Published URLs by simply calling Receive- SPService-ApplicationConnectionInfo without the pipeline as we do in listing 9.

Listing 9: Retrieving Published URLs using Windows PowerShell

At this point we should go ahead and connect to the remaining service applications so that we have all the desired connection proxies in the Content Farm. If a proxy has configurable options (e.g. MMS) then they are available in the Content Farm and these settings of course will impact the operation of the service applications in relationship to their proxy group.

We can also use Windows PowerShell to connect to a service application as shown below with the Managed Metadata service application.

Figure 14: Manage Service Applications (Content Farm)

Page 60: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

60

If we navigate to the Configure Service Application Associations page in Central Administration we can see our default proxy group with our Web Application (intranet.contoso.com) and our connected service application proxies.

Figure 15: Service Applications Associations (Content Farm)

We could at this stage go ahead and create local service applications in the Content Farm such as the Office Web Application related service applications and Access Service, Word Automation Services and so on.

Configuring to Service Application PermissionsBefore we can actually consume or manage the service applications in the Content Farm we need to configure permissions of the individual service applications in the Services Farm. If at this point we attempt to manage them (e.g. BCS, SSS) or consume them (e.g. Manage Term Store from the intanet.contoso.com application) we will receive errors such as “Access Denied” and “No application available”.

For all of the service applications aside from UPA we could go ahead and add permissions for the Content Farm ID (similar to what we did earlier for the Topology service). Again we can do this via Manage Service Applications Permissions or with Windows PowerShell.

Page 61: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

61

Listing 10: Adding Content Farm ID permissions on the Services Farm Service Applications

This is certainly the easiest option, but it will grant access to the service application for the entire farm. Such a configuration is only really appropriate in a development lab environment. In a real world deployment we would want more granular permissions than this.Of course what those permissions need to be will depend upon the particular deployment scenario. The following is the minimal permissions necessary for functional purposes only.All services must have the Content Farm’s Farm Account added to the permissions, and we should also add the Application Pool hosting the Web Application(s) in the proxy group so that Site Collections in those Web Applications can consume the services.UPA is a special case (isn’t it always!) as it only supports Domain credentials, and cannot accept the Content Farm ID at all. Hence the script above adds the application pool account hosting the Web Application(s) in the proxy group. The Content Farm’s Farm Account is added to the UPA automatically if the order of this article is followed.

Testing the functionalityOur configuration is now complete and we can go ahead and manage and consume services as we would normally in the Content Farm. One should test BCS and SSS management from Central Administration. Search Querying, Term Store Management, External Lists and User Profile editing can all be tested from Web Applications.

ConclusionService Application Federation is a key enabler for flexible and scalable deployment of SharePoint Server 2010. Watch out for the next DIWUG eMagazine which will contain part two of this article focusing on enterprise deployment considerations and exploring some of the more “advanced” configuration aspects.

Page 62: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation
Page 63: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

63

Facilitate applicants with InfoPath 2010 and Office 365

by Albert-Jan Schot

Since SharePoint 2010 supports easy editing of list forms using either SharePoint Designer or InfoPath Designer a lot of creative solutions have been created. If you don’t want to

create and deploy custom solutions you can choose to use SharePoint Designer or InfoPath. In this case the requirement is fairly simple. We want to create a solution that allows people to register for a course. We want to create the functionality without having to create and deploy a custom solution. That being said we also need to make sure that

applicants can no longer sign in as soon as a course is full so we need to keep track of users that sign up for a course. Now all the examples are created on an Office 365

environment (please keep in mind that you will need an Enterprise plan for this), but that this will also work on a local SharePoint installation.

Setting up your environmentSince Office 365 is a “live” environment you might want to create a separate Site Collection whenever you are trying to build or configure anything. If something fails, or for some reason you end up breaking stuff you still can delete the site collection. In this example a Wiki template is used, however any template will do. Within this template we will create two lists that can be used for storing the data; a courses list that contains all the courses users can attend, and an applications list that will be used to store applicants. The Application list will hold a custom InfoPath form where users can sign up for a course, while the courses list contain a custom View Form view where the InfoPath form is shown using an InfoPath Viewer WebPart.

The first step therefore is to create a new Site Collection, or go to the Site Collection that you want to work on. After that you can create a new Custom List called Courses and create the following columns to hold the required information:

Description (Multiple lines of text)

Location (Single line of text)

Maximum Attendees (Number (1, 10, 100) (without decimals))

Figure 1: Courses List example

Page 64: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

64

Next we can create a list to hold all the applications for the courses. We will use the Custom List template to create the list and we will call the list Applications. The list should contain the following columns:

Maximum Attendees (Number (1, 1.0, 100) (without decimals))

Current Attendees (Number (1, 1.0, 100) (without decimals))

CourseID (Single line of text)

Course (Lookup) (use the Title column as lookup value)

Figure 2: Application List example

This is enough preparation and it is finally time for the InfoPath goodness. However keep in mind that we only created the bare minimum of columns, so in case you want to store more information for the courses (or applications) you can add extra columns to store the additional information.

InfoPath magicAs you might have noticed in SharePoint 2010 you have the option to “change” the display- and edit form by using InfoPath. This is done within the tab “Lists” in the ribbon, where you can find the Customize List section that contains the Customize Forms button.

Figure 3: Ribbon button to allow form customization

Whenever this button is clicked (and you have InfoPath Designer installed on your machine) InfoPath Designer will open automatically. Just by opening the form in InfoPath designer the layout of the form will change slightly as the “Attachments” column is added to it, resulting in the form shown in Figure 4.

Page 65: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

65

Figure 4: Default InfoPath form for the Applications list

In our example the “Attachments” option is not used so the row can be deleted. Some of the other rows will be hidden later but should be kept visible now so we can make sure that the calculations that we want InfoPath to do are correct.

If you ever regret the changes you made to your list form

you can go to List Settings – Form Settings to reset

the EditForm to the default SharePoint form.

You can choose whether you want to keep your custom InfoPath form

or delete it.

Retrieving maximum attendeesThe next step will be adding some more information from the Courses list, since we need the maximum amount of attendees.

To do so, simply click Manage Data Connections on the bottom right of the InfoPath screen.

Figure 5: Manage Data Connections

In the Data Connections screen click the Add button. Keep the default options to “Create a new connection” to receive data from the courses list and click next. Use the SharePoint Library or list option, and click next again. Then enter the URL of the site you are working on and click next (1). Then select the list called Courses and click next (2). Then select the Title and Maximum Attendees fields and click next (3) and click next again. Finally change the name to Courses_Real so you can easily identify it and click Finish. You will now have two separate Data Connections so you can click close to close this screen.

Page 66: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

66

Figure 6: Create Data Connections

The Data Connection with the name Courses is already present in the InfoPath

form to facilitate the lookup column that is created in this list.

Now that we have the Data Connection to retrieve the Maximum Attendees we can create a rule that sets the data from the Data Connection into a field in the form. Click on Manage Rules in the ribbon, then click the Courses Dropdown and click on New in the Rules pane and choose the Action option.

Click on Add to add a new action and use the Set a Field’s value (1). Select the Field MaximumAttendees (2) and click the Fx icon (3) for the value. Then click Insert Field or Group (4), click Show advanced view, change the data connection to Courses_Real and open the folder DataFields (5). Then open the subfolder and select MaximumAttendees and click Filter Data (6). Click on Add in the Filter Data window (7) and select “ID” and “is equal” to and then browse to the Courses field from the Main Data Source (8). Keep clicking OK till you end up with a finished rule (9).

Page 67: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

67

Figure 7: Filter data for maximum attendees

You can now publish the form and if everything worked fine you see that as soon as you change the course in the dropdown it will set the maximum attendees to the correct value that is in the courses list.

Retrieving current attendeesIn order to make calculations (check to see whether there are any available seats left for a course) we also have to get the current amount of attendees. To do that we have to create another Data Connection, so we click on Manage Data Connections again and repeat all the steps to add a new Data Connection. However this time set it up to receive the Applications list and use the Title and “CourseID” field. Then click on the Courses field in the form and in the Rules window within the Rule 1 create another action by clicking on the add button and set the Field Value of the “CourseID” to the “Courses Value”.

Figure 8: Adding an extra filter

Then click the Courses again and add another action (set a field’s value) (1). Set the “CurrentAttendees” field (2) and use the FX icon to set the value (3). Within the formula window click insert function and insert the Count function (4). Click on the text “double click to insert field” and then click on Insert Field or Group (5). Click the Show advanced view and select the Applications Data Connection. Click the “dataFields” folder open and select the Title field and click on Filter Data. Add a new filter where “CourseID” from the Applications Data Connection is equal to the “Courses” value from the Main Datasource and click ok until you are back in the form.

Page 68: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

68

Figure 9: Filter data for current attendees

Save and publish the form and you will see that if you create an item it indeed saves the Maximum Attendees and shows the Current attendees per course.

Wrapping up form itself Since the form is now created and contains most of the logic, the next step would be get rid of the save button in the ribbon and make a nice submit button, and check what you would like to do with the title and some other unneeded fields.

Figure 10: Form options

In the example I changed the Title column to no longer be required, that way you can change the Form to make the Title field optional. By right clicking on the Title field in the Infopath Designer you can select the Text Box Properties and uncheck the “Cannot be blank”. That way the Title column is no longer required. After that you can delete the rows that contain all columns except the dropdown with courses.

By going to the File menu you can select the Form Options, and disable the InfoPath Ribbon.

Page 69: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

69

Now we can create a submit button by adding a new Button control, and right clicking it to select the Button properties. By using the submit action the form will “submit” its values to the SharePoint list. However there should be a little bit of logic so users can only submit the form if the course isn’t fully booked yet. Since we saved the maximum attendees and the current attendees in the form it is easy to create a rule that checks that. Therefore we create a new formatting rule on the submit button and create a new condition where CurrentAttendees is greater than or equal to MaximumAttendees and click the Disable this control so that the button itself can only be clicked if there is place.

You can also create a message that uses the same rules to show a warning if a

course is full, instead of disabling the button.

Test the form to check if it counts the current attendees by adding a few applications to the list.

Putting the form on the courses page (using Designer) If the form is counting attendees correctly it is time to put it on the correct page, the Course page. By going to the Courses list you can edit the list by clicking the Edit list in SharePoint Designer in the Ribbon (the same for InfoPath forms). In the SharePoint Designer window we can click on the DispForm.aspx and then click Advanced Mode in the ribbon. Then click in the div just below the List Form in the Placeholder Main and add an InfoPath Form WebPart.

Figure 11: SharePoint Designer Add InfoPath WebPart

Save the page and ignore the warning about customizing this page. After that you can close the SharePoint Designer and browse to the Courses list. Click the first course you created and you should see the Form WebPart. Click on the “click here to open the tool pane” in the InfoPath Form WebPart, select the List that contains the applications, and click on apply.

Page 70: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

70

Then click on the arrow of the Forms WebPart and Click on connections, then click Get Data From and check Courses. This will allow you to retrieve data from the Courses list. Then set the Provider Fieldname to ID and the Consumer Fieldname to CourseID.

Figure 12: Connection settings

Now there is only one last thing that is left and that is to change the InfoPath form that whenever the CourseID field changes it sets the Courses field so that when you open the page and the Form is loaded it gets the ID from the Course you are seeing and sets the dropdown to the corresponding value. Setting that value can be done the same way as we did in the step where we retrieved the current amount of attendees. You create a rule on the “CourseID” field and set the “Courses” field value to the “CourseID” field value.

Figure 13: Create a rule to set the CourseID value to the Courses field

Page 71: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

71

If you want to change a WebPart on a View- or Edit form page you can trick

your browser into showing the ribbon and WebPart properties by adding

&ToolPaneView=2 to the URL.

ConclusionInfoPath 2010 provides a rich interface to easily create rich user focused applications without having to write code. With some creative thinking it allows you to create powerful applications that can help you and your users. Based on the example described in this article we are able to track our users as applicants for certain courses. You could also expand this a little more by providing a simple Workflow. That way you could send an applicant an e-mail just before the course start as a reminder of the course and its location. Now if you would implement something like this be aware that you don’t need to ask users for their name since that is already present. The same goes for a user’s e-mail or any other information that might be retrievable using their User Profile. We can create powerful solutions that don’t require us to do any custom coding and that only take us a few hours to create.

Page 72: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

72

About the authors

Page 73: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

73

Page 74: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

74

Page 75: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation

75

Page 76: Colofon - DIWUG SharePoint Magazine · Our experiences are that using this visualization as the basis of requirements gathering . ... techniques actually fit in ... requirements facilitation