28

Individual and Social Networking Features

By Matt Ranlett

SharePoint 2010 is more than an organization's content repository, capable of storing and versioning web pages and documents with ease. It is also an organization's social butterfly, finding common interests between various employees and stitching together the contents of the various repositories across organizational boundaries.

The social aspect of SharePoint is one of the feature areas that received the most attention and investment from Microsoft during the evolution from SharePoint 2007 to SharePoint 2010. The capabilities of prior versions have been significantly augmented in this latest offering, and include a number of personalization and organization capabilities.

This chapter will first focus on ensuring that a common social computing vocabulary is established with respect to SharePoint's functionalities. Once a firm understanding of the various capabilities has been imparted, the second portion of this chapter will focus on the incorporation of SharePoint's social networking capabilities in enterprise portal applications.

images

FIGURE 28-1: User-centric identities

A social computing application is inherently built around individual users. When considering a user-centric design approach, it is helpful to think of an individual's various identities. At every moment, each user thinks of himself or herself as having three concentric identities, as shown in Figure 28-1.

Note the following about each of these identities:

  • Myself — From the core, the user's individual identity is of foremost importance. What is important to the user as an individual? What would the user like to share with others about himself or herself, and about their work?
  • My Team — In one form or another each person is part of a team. The team might be a project team, an organizational department, an office location, or, most likely, all of the above. How can users easily find their teams and keep track of what happens without having to bookmark every important site?
  • My Company — For employees in an organization, some important organizational messages should not be missed, and should be easy to find in the future.

SharePoint 2010 allows for a user-centric approach to content management and discovery through the social computing tools that are discussed in this chapter. However, right from the beginning, it is important to understand what SharePoint is not.

SharePoint is not a social networking tool. Installation of SharePoint does not bring Facebook into the organization, and employees should have no trouble delineating work-related activities in the corporate portal from personal activities that take place on social networking sites. The social computing tools available out-of-the-box with SharePoint 2010 are all focused on improving the user's experience when it comes to focusing on relevant content.

PERSONALIZATION

Among the social computing tools available within SharePoint 2010 are those that help the user to personalize the SharePoint browsing and interaction experience. This personalization toolkit includes a user's profile, My Site, and the capability to personalize the pages the user sees. These components build on one another to help each user have an individually relevant experience with his or her SharePoint portal.

User Profile Information

The core of any social application is the user profile. Referring back to Figure 28-1, the User Profile is SharePoint's answer to how the user can define himself or herself on the portal. Information inside of the User Profile is a combination of personal attributes that are pulled from various external application sources, and personal attributes that are manually maintained by the users themselves.

Out-of-the-box, a SharePoint 2010 User Profile will offer 75 distinct properties, including LastName, FirstName, WorkEmail, SPS-Birthday, SPS-Interests, and more.

images You can find a full listing of available default properties on TechNet under the SharePoint Server 2010 site and solution planning section at http://technet.microsoft.com/en-us/library/ee721054.aspx#section2.

Additional properties can also be created by system administrators should the default properties not fully meet the organization's needs. When creating properties, each property field offers independent configuration of a number of options, including the field-level privacy, the inclusion of the property in SharePoint's search index, and whether the property is synchronized from an external system or maintained manually by the user.

When connecting to an external system for User Profile data synchronization, it is important to understand that the default system for such connections is Microsoft's Active Directory (AD) or other Lightweight Directory Access Protocol (LDAP) directories (such as Novell's eDirectory and Sun's SunOne). Once the User Profile data from the AD/LDAP user directory has been imported, it is possible to import additional data from other systems, such as Human Resource (HR) systems and Customer Relationship Management (CRM) systems.

This technical consideration is significant when considering users who are not members of the organization. External users can be granted access to SharePoint without requiring their profiles to be included in automated profile synchronization. But those external users will not show up in SharePoint's People search, nor will they be eligible for My Sites. There are ways around this technical hurdle, but it is important to be aware of this when planning for User Profiles and profile synchronization.

Once a User Profile has been established, the foundation for SharePoint 2010's social computing capabilities has been laid. Now the users can begin to expose personal details, work on public and private documents, identify colleagues based on common interests and experiences, and improve the rest of their portal interactions based on their profile attributes.

My Site

If the User Profile is the foundation of SharePoint's social computing experiences, a user's My Site is the pinnacle of individualization. Again referring back to Figure 28-1, the user has now been defined in terms of his or her User Profile attributes. SharePoint's My Site is a way for that user to expose some or all of those details, personally manage content storage, individualize newsfeeds populated by ongoing portal activities, and more.

Activity Streams

The newsfeed is a stream of content interactions anywhere on the portal. When a colleague uploads or modifies a list item or document on the site, the newsfeed brings that activity to the user's My Site for easy discovery.

If the user does not have permission to view or interact with the content, SharePoint's native security trimming capabilities hide it from the user both on the source site, and in the user's newsfeed. It is important to note that this security trimming capability is provided by SharePoint's search indexer, which records user permissions as it crawls over the various content items. Users have the opportunity to customize the content of their newsfeeds by identifying colleagues, tags, and interests throughout the portal. You learn more about these concepts later in this chapter.

The power of an activity stream or newsfeed is that users are able to bridge site boundaries to see content updates in one location, rather than having to navigate from site to site the way SharePoint 2007 frequently made users do it. Time is saved, and users feel more connected to the rest of the portal activities because they have not been left out.

Public and Private File Sharing

Each My Site offers its user a pair of document libraries and a picture library on a My Content page. The document libraries are named as follows:

  • Personal Documents — As expected, the Personal Documents library is viewable only by the individual user who is the owner of the site. This means that any documents placed in the Personal Documents library are secured and private to the site owner by default.
  • Shared Documents/Shared Pictures — Again, as expected, the Shared Documents library and the Shared Pictures picture library are open to anyone who has been granted access to that user's My Site. This normally means that all domain users are able to view the contents of any My Site's Shared Documents and Shared Pictures.

This clearly defined split between public and private content in a user's My Site helps to drive users to the portal, especially those users who might otherwise be reluctant to tackle some of the technical challenges of using SharePoint over a less complex folder share on a file server.

Expertise

Each My Site offers its user a My Profile section. This is where the SharePoint User Profile is exposed. With its built-in status updates and micro-blogging, interactive organizational charts, colleague browser, and more, the My Profile section allows the users to advertise themselves to the rest of the organization.

It is also here that the users are able to advertise their interests and expertise through SharePoint's Ask Me About section. The Ask Me About section lets users capitalize on SharePoint's native tagging infrastructure. By associating a tag with Ask Me About, the user will show up on a Search page's People Matches during a search for one of those keywords. When viewing a user's profile, clicking an Ask Me About tag brings the user to SharePoint's Note Board functionality to ask a question that not only gets e-mailed to them, but is publically viewable in SharePoint from then on.

Search

This is the secret weapon of SharePoint when it comes to turning the portal into more than a file locker in the sky. By exposing the User Profile to search, SharePoint allows for a rich data-mining experience, which includes not only the content in the portal, but also the people responsible for the organization's knowledge capital.

Given the deep look at an individual's contribution to a social network, it is time to include groups of people and consider their relationships with each other.

COLLEAGUES, ORGANIZATIONS, AND MEMBERSHIPS

Moving out from the “Myself” circle from Figure 28-1, users will next consider themselves part of one or more teams. Part of these team interactions center on the people they work with, and the other part of these team interactions center on the content they work with on their various SharePoint portal sites.

The questions asked by employees in this context move from, “How do I advertise myself to the company?” to questions like, “How do I best work with my teammates in the office and around the globe?” Microsoft provides a number of integrated people and content organization tools inside of SharePoint that specifically target this segment of user needs.

Colleagues

Fundamentally, a workplace is comprised of people working together toward a common goal. It is in the context of a focused team like this where some of the strongest social capabilities of SharePoint 2010 come into play.

Users can leverage their My Sites and its activity feeds. SharePoint 2010 offers users the capability to identify certain people as colleagues worthy of closer attention. When a SharePoint 2010 portal user is identified as a colleague, that person is effectively being “followed” as one “follows” friends on Facebook or Twitter. Any public activity such as checking in documents (given the proper security permissions) or the change of a User Profile detail shows up as an entry in any of the My Site activity feeds of followers.

Consider for a moment how powerful and pervasive this simple concept is. Following “friends” is the foundation for most public social networks on the Internet, especially the world's most popular social sites (Facebook and Twitter). According to The Nielsen Company, global consumers spent more than five and a half hours on social networking sites like Facebook and Twitter in December 2009, which represents an 82 percent increase over the previous year.

images For more information, see the Nielsen blog post, “Lead by Facebook, Twitter, Global Time Spent on Social Media Sites up 82% Year over Year,” at http://blog.nielsen.com/nielsenwire/global/led-by-facebook-twitter-global-time-spent-on-social-media-sites-up-82-year-over-year/.

Should this trend continue at this incredible growth rate, Nielsen will report social networks as consuming 10 hours 13 minutes per month in December 2010, and an astonishing 18 hours 42 minutes in December 2011 on average around the globe!

It is exactly this type of time-consuming trend that tends to frighten management teams who are worried about employees sacrificing productivity for the enterprise in order to “play” on Facebook. Fortunately, SharePoint 2010 builds in several automations that reduce the time-consuming maintenance aspects of interpersonal social networking.

Automatic Population of Colleagues

SharePoint 2010 takes advantage of its integration with AD to build out an understanding of each employee's place in the organization. By default, SharePoint adds the user's manager, reports, and peers as colleagues for each user. This is done initially at the time of full profile synchronization. But SharePoint keeps the colleagues list in synch with organizational change by scanning the AD for new people every time an incremental profile synchronization is run.

SharePoint Server Colleague Add-in for Outlook 2010

Outlook 2007 and Outlook 2010 each ship with an add-in called the Microsoft SharePoint Server Colleague Import add-in. Active by default, the SharePoint Server Colleague add-in scans through the user's Sent Items folder to look for names and keywords, along with the frequency of those names and keywords. The results of the scans are periodically updated and stored on each user's local computer.

images Colleague and keyword suggestions are stored by default at C:Users<loginname>AppDataLocalMicrosoftOutlookspscoll.dat.

When a user visits his or her My Site, this list is accessed and is presented to the user as a set of suggested colleagues he or she may optionally want to add to My Site. Additionally, keyword suggestions loaded into the User Profile are proposed to the user as suggested keywords for the Ask Me About section of their My Site. The user can approve or reject contact names and keywords.

Although the scan is on by default, it is important to remember that each user must explicitly add anything discovered in the scan to SharePoint. However, if this feels too intrusive, it is easy to disable by using Microsoft's Active Directory Group Policy administrative capabilities. TechNet contains easy-to-follow instructions for group or individual disabling of this component in KB article 2020103.

Organizational Hierarchy Browser

Thanks to a person's profile page (person.aspx) in his or her My Site, it is easy to gain an understanding of that person's interests and expertise. However, before reaching out to that individual directly through the integrated presence capabilities such as instant messaging (IM) or e-mail, it is frequently helpful to understand exactly who that person is by virtue of the person's reporting relationships.

SharePoint offers two experiences to help with that understanding — an HTML page and an interactive Silverlight organizational browser. Both show the person's manager and peers. The Silverlight browser is interactive, smoothly scrolls through multiple levels of the organizational hierarchy, and shows direct reports as well as peers and managers.

The organizational hierarchy details (which are rendered by both the HTML page and Silverlight organizational hierarchy components) are created based on information imported during the profile synchronization process. Organizational hierarchy data is pulled from Active Directory, and reporting relationships are compiled based on names in the Manager field. Once the details have been imported automatically, and are stored in SharePoint's User Profile database, updates to the hierarchies continue to come from incremental profile synchronizations.

Site Memberships and Distribution Lists

In addition to understanding how a person fits into an organization, it is frequently helpful to understand how that person fits into SharePoint's system of portal and team sites. SharePoint 2010's My Profile page of a My Site offers a Memberships tab that lists the sites in which the user is in the default Members group. In addition to site memberships, SharePoint's MemberGroup concept also defines a distribution list (DL). Distribution lists that are configured and stored in Active Directory are imported along with other User Profile details during a profile synchronization. By default, the Memberships list is a simple, flat list of all available sites. But a user does have the option of grouping sites together, and even hiding membership from the general public in the same way User Profile details can be secured.

Presence

SharePoint offers integrations to Microsoft Office Communicator and Microsoft Lync as pieces of Microsoft's Unified Communications strategy. Microsoft Office Communications Server (OCS) 2007 and Microsoft Lync 2010 are Microsoft's offerings to organizations that want to fully deploy and manage their own instant messaging (IM) and online presence solutions. In addition to simple IM-style chat, OCS and Lync feature audio and video conferencing, IP telephony, web conferencing, and voicemail integration through Microsoft Exchange, as well as application and desktop sharing.

Microsoft's Unified Communications applications (OCS and Lync, as well as the free chat application Windows Live Messenger) offer a level of client integration into SharePoint that helps users understand the presence of their co-workers. The term “presence” can signify a number of different user experiences, some of them happening simultaneously.

Throughout this chapter, however, presence will be referred to only as the representation of a user's state in relation to his or her use of their computers. In other words, presence herein is considered the status of a user as the user interacts with a computer application that is designed to track the user's state. In this way, when a user logs in to the application, the user status can then be represented as being “online,” and when the user leaves the application or shuts down the computer, the status can be represented as “offline.”

When OCS, Lync, or Windows Live Messenger have been installed on the user's computer, and SharePoint is accessed through a compatible browser, an ActiveX control is launched automatically to render a presence as a green, red, or yellow button next to a SharePoint user's name. Hovering over that button pops out a context menu that reveals the selected user's availability and several communication options (including an OCS chat or e-mail, as shown in Figure 28-2).

images

FIGURE 28-2: Presence in SharePoint 2010

The power of presence is that any portal user is simply a click away. Whether engagement occurs via an e-mail, an ad-hoc IM chat, or a scheduled meeting, SharePoint's presence capabilities bring the office staff together more frequently and more efficiently. Furthermore, the presence capabilities outlined here not only work in SharePoint, but also in all other Microsoft Office applications, including Outlook, Word, and more. Users have the same integrated experience whether they start from Lync, Outlook, or SharePoint.

Presence is a powerful communications enabler, but the interactions through the presence icon tend to be one not preserved for the rest of the online community to participate in. This gap is where SharePoint offers several longer-lived and more widely accessible communications options, including blogs and wikis.

BLOGS AND WIKIS

As carried over from SharePoint 2007, blogs and wikis are easily visible social features of SharePoint 2010. The easiest way to think about these social aspects is that an entire SharePoint site can be built around the functionality of a blog or wiki. The hallmarks of these sites are the text-based solicitation of user feedback in the form of blog comments or wiki page edits.

Blogs

A blog is an application generally featuring owner-written content that is open for public comment. Although this is not a new concept to SharePoint, blogs can be incredibly useful to an individual or team attempting to communicate to an otherwise disconnected audience of readers. Since the 2007 versions of SharePoint, blogs have been used to replace e-mail distribution lists, as well as occasionally updated “interesting ideas” lists of links with a longer-lived and more functional medium. SharePoint 2010 refreshes the concept of corporate blogs with new features and a fresh look and feel.

While a blog is typically envisioned as the point of broadcast by an individual, it is becoming more and more frequent to see business teams using a blog as the focal point of their communications with each other and with the rest of the business. The easy-to-understand RSS capabilities, the bi-directional communication through blog comments, and easy-to-understand way to consume past activities on the web page have really begun to shine a light on this SharePoint site template.

Micro-blog

A micro-blog is a social networking phenomenon seen most apparently in Twitter, Yammer, and Facebook's activity streams.

When a user updates his or her status via the Web on the SharePoint 2010 My Site, it shows up in all of the activity streams of the user's followers. SharePoint's status updates and micro-blogging enable easy broadcasting of information to all of the user's followers in order to facilitate conversations, improve employee engagement, and encourage social collaboration. All of this happens behind the firewall in a secure environment without the risk of sensitive customer information (or perhaps even complaints about customers) falling into the wrong hands.

Users of Microsoft Lync 2010 actually have another micro-blog option. In addition to the native SharePoint status updates, when a user uses Lync to update his or her status, the presence pop-out menu will show that status in the portal, but will not keep a running history in activity feeds.

Wikis

Complementing blogs in the user-generated content category are wikis. Though wikis as a concept have been around since 1995, and available in SharePoint since 2007, the simple concept is deceptively difficult to employ in organizations that are used to working with documents as the primary means for disseminating information. Cemented in the public consciousness by Wikipedia, the hallmark features of wikis include simple data entry and ease of linking content inside of the wiki.

Wikis Everywhere

In SharePoint 2007, wikis were first introduced as a site template that featured a collection of text-based, cross-linked web pages in a page library. Users who have experienced the relative ease of editing a wiki page (complete with WYSIWYG editing and HTML-free page linking) frequently try to build team sites centered on wikis.

SharePoint 2010 turns the concept of a wiki on its head by offering the easy editing wiki functionality on every page, thanks to a new Rich Text Editor component built into SharePoint 2010 team site pages. Improving on the capabilities offered in previous versions, SharePoint 2010 makes the entry of text, images, lists, and functional web parts an effortless experience. This lends itself to an organic growth when combined with the traditional list and library-based information-management capabilities familiar to users of previous versions of SharePoint.

In a team collaboration environment, the easy text and image editing capabilities of team site pages in a “wikis everywhere” site dramatically eases the management and overhead required to maintain a site. Rather than focusing untrained users to think in terms of lists and web parts, web pages in the intranet become web pages again.

Despite this user-centric thinking, it is important to understand that there are actually different types of content pages, as well as how the ones that include the wiki editing fit into a SharePoint portal site.

Publishing Pages

Publishing pages exist only in sites that have the SharePoint Publishing infrastructure features installed. The chief difference between a publishing page and other page types is that a publishing page offers end users the capability to place specific content elements in specific layouts, much in the same way a magazine publisher would lay out magazine pages. The author or editor would select a page layout template with one or two columns, an image on the top left or bottom right, and perhaps some specific content rollups on the side or bottom of the page.

Once a layout has been selected and populated via the browser, it is easy to change to another layout without affecting the content. This is thanks to SharePoint's capability to keep content data separate from the page layout instructions.

Sites that leverage the Publishing infrastructure and publishing page layouts tend to be very concerned with consistency of look, often incorporate a strict content-approval scheme, and require significant pre-planning and development before being released by IT for content entry. Public (Internet) facing SharePoint sites almost always leverage this page type.

Web Part Pages

The focus of a web part page is the dynamic display of information in lists, charts, and other customizable functionality via SharePoint web parts. Although every SharePoint page has the native capability to host and display web parts, this web part page type eschews the strict formatting guidelines of publishing pages and the collaborative editing capabilities of wiki pages.

Wiki Pages

The Rich Text Editor wiki page is a default experience for almost all SharePoint 2010 template sites, excluding certain workspaces and enterprise site templates such as publishing sites. The focus of these team site wiki pages is easy manipulation of elements on the screen, complete with the capability to intermingle text, images, list data, and functional web parts in a single editor.

The experience feels a bit like editing a Word document with its Ribbon and its easy capability to manage different types of content. Wiki pages are intended for small team sites where the presentation of content is perhaps less important than the capability for the site to be flexible in the ways content can be presented.

Enterprise Wiki

In SharePoint 2007, the wiki site template was an excellent first attempt by Microsoft to introduce wikis to the masses. But it frequently fell flat because of the inherent limits of SharePoint 2007's site structure and scalability.

To remedy the frequently cited SharePoint 2007 wiki shortcomings, Microsoft introduced the Enterprise Wiki site template in SharePoint 2010. The Enterprise Wiki template uses a combination of publishing page layout template technology and wiki rich text editing in a high-capacity storage system. The result is a site that is perfectly suited for centralized Knowledge Management, and is ready to be turned into a “My Company” Wikipedia. (Contoso-pedia anybody?)

Blogs and wikis are fantastic tools that users tend to have no trouble understanding and interacting with. Unfortunately, not every community concept needs its own blog or wiki entry. To help with smaller concepts and categorizations, SharePoint 2010 incorporates functions that users are normally familiar with: tags, ratings, and comments/notes about content.

TAGGING, RATINGS, AND NOTES

Unlike blogs and wikis, tags and social feedback are totally new to the SharePoint 2010 experience. These new features take the social experience of SharePoint to a whole new level of user participation and interaction, allowing users to discover content and what other users think of that content.

Tags

The act of tagging content is the assignment of descriptor words or categories to that content. There are two types of tagging:

  • Social tagging refers to content, and adds metadata to content to describe what it is, what it contains, or what it does.
  • Expertise tagging is related to a person, and describes the person, (such as what she does, which projects she works on, or what skills she has).

Whereas social tagging of content enables users to organically flex and grow a portal's information architecture over time, expertise tagging helps build relationships and connections to other people in the organization.

One of the most compelling features of social tagging in SharePoint 2010 is that tags are given profile pages much in the same way people are. Clicking any tag (whether on a document or on a User Profile) brings the portal users to the profile page where they can see the sites where the tag has been applied, documents and content elements that have been associated with the tag, and people who are applying the tag. In essence, a tag profile page is an instant community with its own dynamic set of content and users!

Bookmarks

Internet users familiar with tools such as Delicious and Diig will recognize that social bookmarking is the practice of sharing bookmarks with a community of users to help build the knowledge and perspective of the community as a whole. Bookmarks in SharePoint 2010 replace the 2007 My Links feature, and allow a user to define how a link is shared and categorized.

SharePoint bookmarks even support the inclusion of non-SharePoint content! Through the use of web browser “bookmarklets” available on every user's My Profile page, SharePoint 2010 allows any piece of Internet content to be posted to that user's social bookmarks, and can be tagged at the moment of bookmarking.

Feedback and Rating

A popular social Internet activity is to rate and comment on the activities and contributions of other users. SharePoint incorporates the capability to rate content with a five-star metaphor, and to comment on that content much the same way a user can comment on a blog post. This rating system is most visible when viewing a list of documents in a document library as a column of five stars.

Note Board

Users of Facebook will recognize how easily they can communicate with each other via the Wall. SharePoint 2010 builds this concept of a communication accelerator into its note board application. Note boards are available for use on an individual user's profile page, a tag's profile page, and an organization's profile page.

The communication intent of the note board is different from e-mail, IM, and the preexisting discussion group's functionality. Note board comments are not generally intended for multiple users to respond back and forth as they might in a discussion group or in an e-mail distribution list. Instead, note boards are for quick casual comments that add color or context to the content in question.

Notes are a permanent addition to SharePoint, and remain discoverable on User Profile pages.

SharePoint 2010 offers some significant social components or building blocks for an enterprise architect to consider when constructing a larger enterprise solution. How should these building blocks be used to maximize value without distracting from general corporate business? The following sections step away from the technology enablers and focus on the more holistic business landscape.

KEY BUSINESS CHALLENGES

Deploying a new portal is not a small challenge. A lot must be considered, including hard costs such as software licenses and hardware platforms, ongoing costs such as new full-time equivalents (FTEs), training, and the effects of necessary organizational changes. All of this must be balanced against the return on investment (ROI) numbers, which are frequently difficult to predict with accuracy.

The remainder of this chapter focuses on how the social components of SharePoint 2010 may impact an organization in a positive or negative fashion.

Clarifying Business Requirements

When organizations start talking about new portals, the underlying reasons for the conversation tend to be centered on desires for increased employee engagement and better communication inside of a system, which is easier and cheaper to maintain compared to whatever solution exists now. When considering a SharePoint 2010 solution with all of these new social networking capabilities, the planning and deployment teams should give careful consideration to the social networking capabilities.

The social features may very well become an integral part of the glue that holds the portal together. They are almost certainly going to be a major part of why users keep returning to the portal.

Defining and Planning the List of User Profile Properties

SharePoint comes ready for users with hundreds of properties that may be selected for exposure on employee profile pages. A number of these properties may be auto-populated through integrations with AD or integrated HR systems such as PeopleSoft. It is up to the implementation team to choose from the pool of available attributes, as well as the subset of attributes for exposure on portal pages. In search terms, this is the difference between crawled properties and managed properties, or properties that are consumed by SharePoint's search indexer and the subset of those that are exposed to end users on profile pages.

In addition to metadata elements exposed during profile synchronizations, consider if any additional properties should be created and exposed for employees to manually populate. Though it may not specifically relate to business problems at hand, employee engagement could be increased by asking employees to expose silly trivia about themselves, such as their favorite movies or snack foods. It's impossible to guarantee that such activity will improve engagement and morale, but encouraging a little cognitive incongruence may bring levity and tighten relationships.

Storing Personally Identifiable Information

As user details are pulled from HR systems and user directories into the portal, it is important to remember that the underlying mechanisms of SharePoint actually create copies of this data in the various User Profile databases. Care should be taken with access to this information, because it is almost always a wealth of personally identifiable information (PII).

It would be a good policy to ensure that while users are storing their names and e-mail addresses, they are not storing their Social Security numbers or credit card numbers. User Profile data can be hidden from view on a field-by-field basis, but that security mechanism does not make this system an appropriate system for such sensitive personal data.

Another consideration for PII is that some global regions have different regulatory views on this type of data. For example, the U.S. has fairly relaxed government regulations about what is considered restricted PII. In the U.S., most PII is not protected, and that which is protected is covered under protective regulations such as the Health Insurance Portability and Accountability Act (HIPAA). On the other hand, European Union countries such as Germany are extremely rigid about PII, and refuse to allow any PII to cross the country's borders. This may have an impact on how your SharePoint environment is constructed.

Defining Clear Employee Code of Conduct

It can be tempting to consider a company SharePoint portal as just another social network. But users should be reminded that this particular social network is reserved for work-related activity, and should not be treated the same as Twitter or Facebook. SharePoint's social collaboration capabilities are a powerful tool, and should absolutely be used to keep co-workers informed of team activities and stream-of-consciousness thinking about project work. Depending on the organization, this may include turning to SharePoint's note boards and discussion groups for frank conversations about sensitive company information.

Phasing the Rollout of My Sites to Employees

Another key implementation decision is the schedule under which SharePoint's My Site functionality is released to the general employee base. Is it appropriate to release the functionality to all employees at the moment of the initial portal release? Should the release of social functions follow the initial portal release, perhaps in phase 2 or 3? Should all employees receive the functionality at the same time, or should there be a more gradual introduction of the capabilities?

These decisions will vary from organization to organization, and from implementation team to implementation team, based on organizational culture, change management, and IT capacity constraints.

It is sometimes the role of an architect to stretch an application's capabilities in order to provide the proper solution to business requirements. These advanced business scenarios require careful technology planning in order to properly customize application infrastructures and custom code without introducing otherwise avoidable risks. The following section examines a few commonly encountered advanced business scenarios.

ADVANCED BUSINESS SCENARIOS

Geography and corporate job descriptions can act together to isolate people and information in an organization. Fortunately, proper application of SharePoint 2010 can alleviate some of this isolation through native social computing capabilities. Of course, enhancing these social capabilities to meet the needs of a global marketplace may take some extra work, as described here.

Geographically Dispersed My Site Implementations

Building a SharePoint portal environment for an organization offers the opportunity to turn a single software application into the great equalizer. SharePoint's multi-lingual variations capabilities, content ratings, tagging infrastructure, and the rest of SharePoint's social capabilities can do an incredible job of bringing geographically distributed employees together.

However, if an organization is split geographically, such that it does not make sense for all of the data to live in a single SharePoint farm, it may make sense to consider dispersing the portal's My Site hosts. For example, if half of the employee base is in North America, and the other half is in Eurasia, it may make sense to have two My Site farms (two distinct farms with independent My Site hosts) to improve network and perceived application performance.

If distributing My Sites is the chosen option, be sure to pay attention to the following configuration elements:

  • Host farm infrastructure — SharePoint service provider farms are not required to have identical hardware across all installations. If the employee base is concentrated in Eurasia, it may make sense to concentrate infrastructure investment on the most heavily taxed environment.
  • Fail-over replication — What are the service-level agreements (SLAs) for My Sites? If a host farm goes down, can your users still access their personal content on the other region's farm, or on a standby disaster recovery (DR) farm? Consider content replication through tools such as Microsoft's SQL Mirroring or Syntergy's Replicator to ensure data is always available. Allow your geographically distributed farms to provide DR resiliency for each other.
  • Time zones — SharePoint content posts are generally recognized by the time zone the server is installed in. A single global web application instance will record all content entries in a single time zone. Consider distributing My Site host web applications to keep the logged time zone closer to the user's actual time zone.
  • Languages — If your employee base is multi-lingual, consider allowing users to maintain their My Site in their own preferred language. Although SharePoint variations enable multi-lingual copies of the same content usually seen in web content management publishing sites, that is generally not appropriate for a My Site. On-demand machine translations such as those offered by the Microsoft Translator built into Internet Explorer (IE) 8 may be perfectly adequate for global consumers of localized My Site content where professional translators may be required for global HR content.
  • Consistent tagging — Be sure to account for global distribution of content when planning for shared services such as the managed metadata service. Ensuring a consistent vocabulary throughout the organization is part of the process of increasing global employee engagement. Part of this consideration is whether or not to enable the multi-lingual tagging capabilities of the Managed Metadata Service (MMS).

Extending Activity Feeds for Custom Solutions

As an architect, a significant part of the job is to ensure that solutions fit together. This is a big reason why service-based architectures are so popular — SOA architectures promise easy integrations of new and existing applications to meet new demands. Do not forget the Activity Feed as an integration point for notifications of user actions when building custom components and workflows for SharePoint. SharePoint exposes several hooks to the Activity Feed process by using Activity Feed gatherers and ActivityEvent objects inside of the SharePoint API.

Using Role-Based My Site Dashboards

Microsoft released a set of application templates for SharePoint 2007 called the Fabulous 40. These application templates allowed for practically no-code installation of targeted functionality, and served as a model for additional application templates. In addition to the Fabulous 40 templates, Microsoft released seven role-based My Site templates. Unfortunately, none of these templates are being migrated by Microsoft from the SharePoint 2007 platform to the 2010 platform.

The fact that Microsoft is not planning to migrate the 2007 application and My Site templates does not mean that application templates or role-based My Site templates are invalid options. These customizations have simply been left up to the individual organizations and software vendors. Combining out-of-the-box solutions with SharePoint 2010's capability to save any site as a WSP package, software developers and architects can accelerate toward customized application templates.

These application templates are able to leverage new and previously existing functionality, such as the Business Connectivity Services and Content Query web parts to aggregate information onto dashboard pages. Vendors such as CorasWorks are already lining up SharePoint 2010 solutions to provide dynamic dashboards and content roll-ups. Don't be trapped into thinking that the only purpose for dashboard solutions is to surface financial analytics through traditional business intelligence (BI) tools.

Given the importance of the User Profile to the various constituent SharePoint 2010 social computing components and business scenarios described here, it is important to have a firm understanding of the SharePoint 2010 User Profile system and its data sources.

KEY ARCHITECTURAL CONSIDERATIONS

This section reviews the capability of SharePoint to import User Profile data from a variety of data sources, to customize the placement of data into User Profile properties, and the capability to exclude users from import through exclusion filters.

Identifying User Profile Import Sources

When planning for User Profile synchronizations, it is important to understand how SharePoint integrates with the various available data sources. Consider the following high-level overview:

  • Identify and create connections to the appropriate user directory and line-of-business (LOB) systems
  • Identify which properties should be imported into the User Profiles
  • Identify which properties should be synched back to the source data sources in the event that they are updated in SharePoint

First, to initially create a User Profile, the user must exist in one of the supported user directories:

  • Active Directory Domain Services (ADDS)
  • Novell eDirectory v 8.7.3
  • Sun Java System Directory Service 5.2
  • IBM Tivoli version 5.2

Second, a properly configured farm account and synchronization service account must be created and applied to the SharePoint environment. In the event of multiple directories, multiple synchronization accounts should be created to maintain a least-privileged security environment, which is widely recognized as a best practice for production operating systems.

images To assist with this planning activity, Microsoft has created a pair of worksheets that can be freely downloaded. The Profile Synchronization Planning and Connection Planning worksheets are each available from http://go.microsoft.com/fwlink/?LinkId=202832.

Ensuring that Source User Profile Information Is Accurate

For many organizations, without systems like SharePoint to expose data in AD (or other user directory service), the data inside of the directory may become stale, disorganized, or otherwise suspect. Before importing data automatically via profile synchronization, it is important to ensure that the directory service contains accurate information. The effort to sanitize this data may require a project all to itself, but this important step prevents the cart-before-the-horse problem of doing an import and trying to clean up a mess later.

Identifying and Mapping Profile Import Properties to SharePoint User Profile Properties

Once a User Profile has been imported from the AD or other directory service, it is possible to augment that User Profile's data with details pulled from other LOB systems (for example, an HR system like PeopleSoft). The aforementioned Profile Synchronization Planning worksheet will help to identify User Profile properties, including those from business systems.

Combining Heterogeneous Data to Enrich the SharePoint User Profile

When importing data from business systems such as an HR application or a financial application, a wealth of data may be available. However, that data may not be present or consistent for all users. In a heterogeneous data environment such as this, SharePoint 2010 takes advantage of its built-in Business Data Connectivity (BDC) capabilities.

Once data elements from business systems have been identified, an External Content Type (ECT) in SharePoint is created to connect the business system to SharePoint as a data source. Once that connectivity has been established, a property map is defined to identify which external business system data elements flow into which User Profile properties.

To connect to external systems via the ECT connections during profile synchronization, the following methods and identifiers must be specified:

  • Read Item method — The Read Item method (also known as the Specific Finder method) enables SharePoint to read all of the data elements or metadata properties of a single item in an external business system for import into an external content type.
  • Read List method — The Read List method (also known as the Finder method) enables SharePoint to read all of the available data elements and expose them inside of SharePoint as a list of ECTs. Typically, this method does not return all of the data elements, just the important ones for individual item identification.
  • Item identifier — The item identifier is a data element or set of data elements that acts as a primary key uniquely identifying each record. For example, in a personnel database, an item identifier may be the employee ID number, Social Security number, or e-mail address. Each one of those values could be input into the Read Item method to retrieve the single matching record.
  • Comparison filter — The comparison filter is used if there is a one-to-many relationship between the SharePoint User Profile record and the ECT item instances. For example, a financial system may include a set of allowed charge codes to which the user is legitimately allowed to bill job costs. If that user is able to bill to several charge codes, the comparison filter may be used to find only those legitimate charge codes valid for the selected user.

Once the ECT has been defined inside of SharePoint's Business Connectivity Services (BCS) using the appropriate BDC objects and methods, the ECT is connected to the User Profile store for the purposes of augmenting existing User Profile data with business systems’ data. SharePoint's Central Administration web application and SharePoint Designer 2010 make this entire set of activities a series of point-and-click operations with no developer intervention required.

Planning for Exclusion Filters

The default import process may import user accounts that are not desired (such as those accounts that have been disabled). In SharePoint 2007, a complex LDAP query was required to exclude such accounts.

In SharePoint 2010, the same challenge remains, but a brand new administrative configuration screen makes the process much simpler to understand. In the new configuration screen, each User Profile attribute is available for consideration as to whether or not the user should be imported during synchronization. This enables connections to the various source systems that are much easier to read and understand.

Figure 28-3 shows the web interface to exclude users and groups based on individual profile property values.

images

FIGURE 28-3: Web interface to exclude users

Planning for User Profile and My Site Storage Requirements

The spectrum of SharePoint capacity management and sizing considerations is vast, far too large for this chapter. Microsoft has done an excellent job of organizing SharePoint's sizing information on TechNet at http://technet.microsoft.com/en-us/library/ff758647.aspx.

Specifically calling out SharePoint's User Profile data storage requirements and My Site storage requirements can be a bit tricky. Several white papers have been written specifically about social environment capacity modeling, including the following:

Table 28-1 shows the sizing-level guidance that Microsoft has provided for User Profiles:

TABLE 28-1: Sizing Level Guidance for User Profiles

SERVICE SIZING GUIDANCE
User Profile 1 MB/User Profile
User Profile synch 630 KB/User Profile
User Profile social tagging 0.009 MB/social entry

Governing SharePoint My Sites in terms of data sizes can be a fairly simple affair if fully thought out ahead of time. It is possible to set a size quota on My Sites at the web application level, and any new My Site will have this sizing quota applied as the site is created. This sizing limit, combined with the capability for SharePoint to auto-provision new site collections into any number of databases that have been pre-created by a DBA, will help ensure that individual content databases don't grow too large, while the entire My Site environment remains easy to back up and restore.

Enriching People Search

SharePoint 2010 makes it easy to add User Profile properties to a user's My Profile page, but makes it less than an intuitive process to search on those custom properties. To extend SharePoint's People search to enable custom profile properties to function as search refiners, several non-obvious steps are required to ensure the functionality is available.

Assuming that the profile property has been created and added to the MMS, create a new Managed Property and map it to the Crawled (User Profile) Property inside of the search configuration screens in Central Administration. In these configuration screens, also set the property mapping to include the ContentsHidden property.

The result of this configuration of the new User Profile property as Managed Metadata is that the property is now searchable and usable as a refiner, but is the values themselves are not displayed inside of the People search results. Without the display of the new custom value in the search results, the ranking of returned people may seem suspect to users. To modify the presentation of the data to include the new field, adjust the XSLT of the People Search Results web part on the Search Results page.

images Refer to Steve McDonnell's website SharePointSteve.com for more explicit details on how to make custom User Profile properties searchable in SharePoint 2010. You can find this information at www.sharepointsteve.com/2010/10/making-custom-user-profile-properties-searchable-in-sharepoint-2010/.

Using Multiple Farms

The majority of SharePoint 2010's social functionality is provided by the User Profile service application, a back-end component that manages User Profiles, synchronization to back-end data sources, audiences, activity feeds, My Sites, and social tags and notes. The service application stores all of its data in a trio of databases — the profile database, the synchronization database, and the social tagging database.

All of this data is used in My Sites, team sites, and any other site that leverages this information to provide a personalized portal experience. In addition to the User Profile service application, the MMS and the Search Service application round out the social functionality from the perspective of shared services.

The beauty of the SharePoint service application approach is that one service application can provide its services to multiple SharePoint farms. This means that even in an environment where the collaboration farm is physically distinct from the communications farm, both farms can still offer users a seamless social experience. User Profile details and activity stream information can flow between farms. People search will be experienced in an identical fashion because both farms offer up the same data to the search indexer.

However, it is important to note that, though multiple farms are supported by Microsoft, this does not mean that it is possible to use this in wide area network (WAN) environments. The User Profile service application requires direct database access and is not supported across WAN links.

images Instead, Microsoft recommends use of the User Profile Replication Engine. For more information, refer to the TechNet article at http://technet.microsoft.com/en-us/library/cc560988.aspx.

Assuming that the review of features allows for a match of functionality to requirement, the next step is to put together a project to implement these capabilities.

RECOMMENDED APPROACH

Given a good understanding of requirements and capabilities, it's time to focus on the project approach to enabling social computing in SharePoint 2010 deployment initiatives.

Focusing on Business Drivers and Requirements

SharePoint is truly a Swiss Army Knife, a tool that can be used to solve a myriad of business problems. It is an architect's job to ensure that the solution fits the problem, not too large or too small. Listen to the complaints of users and of IT to ensure that SharePoint is actually a fit for the organization, and that the components selected for implementation make sense given the business drivers and overall requirements. For example, if the main problem is one of external non-employee collaboration, PerformancePoint-style business intelligence (BI) may not be an immediate target for development and deployment.

When considering the social computing aspects of SharePoint, listen for the following types of requirements from users and IT:

  • Users need to follow or contribute to content across numerous sites, and that effort has become too burdensome, thanks to the scale of the intranet environment. This is a classic activity feed target, as well as a search target, a tag profile page target, and a content query web part target. Weigh your options and choose the one (or ones) that best fits the corporate culture.
  • Users have a difficult time identifying authoritative sources of information in the organization. More than just having trouble finding the right HR forms on the HR site, or marketing-approved logos in the Marketing site, users need ways to find the right person or expert to ask questions of. This is a classic combination of deep User Profiles/My Sites with its dynamic organizational chart and rich PII, as well as a strong case for integrated Microsoft Lync for presence and its casual IM-style communications. Bringing these concepts together allows a site reader to understand who created content, where they fit into the organization, and the capability to reach out and communicate with that content creator in the event of unanswered questions.
  • Users want to create a site that lets them keep team members updated via regular communications. Blogs and wikis are great communications tools. Do not be afraid to look past the obvious personal blog to find enterprising ways to fit social site templates into your enterprise.

Considering a Phased Approach to Social Networking

SharePoint 2010 is generally a big change for an organization, and adoption of all features will not happen overnight, even if the audience is highly technically savvy. Although the social networking features seem comprehensive and exciting to a technology architect, these same features may seem overwhelming to a user whose main use of intranets before now started and ended with online file storage. Rather than attempting to introduce a user to all of the available functionality at once, it makes sense to slowly add capabilities in a “crawl-walk-run” approach.

Consider focusing on the immediate business problem at hand, and introducing the appropriate social features based on the user-centric thinking introduced in Figure 28-1.

For example, if the business problems fall into the “My Team” collaboration area, consider making heavy use of blogs and wikis with an emphasis on tagging content. Once users are comfortable with tagging content, consider the introduction of My Sites and the associated capability to enrich the portal's social connectivity via each user's Tags and Notes page in their My Site profile.

If, on the other hand, the business problem falls into the “My Company” communication area, SharePoint's activity feeds may be the perfect solution to keeping users alert to important content changes despite the sprawl of a large corporate portal. This, combined with a focus on search, will ensure that content remains discoverable. Future phases of this project may be to bring users closer together with dynamic team sites constructed around SharePoint 2010's native wikis-everywhere editing experience.

Designing, Planning, and Deploying My Sites

My Sites are fundamental building blocks in SharePoint's social experience, but that does not mean that every user needs a My Site, nor that the default My Site experience is appropriate. For example, is the organizational hierarchy an appropriate mechanism for users to discover human points of contact, or should the Silverlight organization hierarchy browser be suppressed?

When considering the design of My Sites, it is important to know the development targets.

First and foremost, the default master page for My Sites can be updated to reflect corporate branding and themes.

Second, it is possible to use the feature-stapling capabilities to attach logic to My Sites. Briefly, feature stapling allows for customized logic to be run every time a site of a specific template is created. This has the benefit of being disconnected from the template itself, allowing for easier revisions of this custom logic.

Common targets for feature stapling include automatically adjusting the site's master page, editing navigation elements, modifying lists and list items, installation of web parts to pages, and so on. For example, a custom feature stapled to the My Site template may update the master page and place a new tab in the My Profile page to display that user's vacation time on a calendar as stored in the organization's time-tracking system.

Once the My Site template and any custom logic or functionality has been decided upon, it is time to define the rollout plan. Do all users get their My Sites at once? Do all users even qualify for a My Site? What is the data size (site) quota that will be applied to all My Sites? Are the data storage tiers of the SharePoint farm prepared for the potential flood of new data?

After a thorough planning and testing period, turn on the SharePoint My Sites, turn the project's internal marketing team loose on the employees, and sit back to enjoy the buzz and accolades!

Overcoming Cultural Challenges

Regardless of how intuitive and simple a portal function seems to be to the portal deployment project team, ensure that end-user training is readily available. Frequently, SharePoint feels to end users like such a large change that users shy away from clicking around and trying things out. This can mean that users may otherwise remain oblivious to exciting new functionality.

A great way to expose new functionality is to create (or purchase) a series of short videos explaining how to accomplish specific targeted tasks. This way, a user who can't recall the difference between columns in a list or library versus a social tag can watch a short 3- to 5-minute video, rather than attempt to navigate a gigantic training document.

An important aspect of user adoption is getting users to try things without them feeling like they are going to be judged based on the quality of the output. Try creating a sandboxed environment for users to try out new functionality without feeling like changes there will be permanent reflections of their skills or capabilities. Focus on breaking down barriers to entry, and give people reasons to visit the portal frequently.

Implementing Improvements and New Features Regularly

Now that the scenario and the scope of functionality for the initial release have been determined, be sure to plan ahead for future phases. Taking an iterative approach for releasing functionality is a good way to show progress to the business, and allows for quick feedback on work that is being done.

Always be sure to start small and add additional features as needed. SharePoint is a forgiving platform, and the chances of making irreversible mistakes are very small. Likewise, the chances of a waterfall design approach to portal releases being completely successful are also small. The objective is to be comfortable with a “Launch and Learn” approach, as opposed to a “Launch and Cheer” approach.

Learn from mistakes and missteps. Survey the users frequently to understand what works and what is confusing or irrelevant to the portal experience. Iterate designs and new functionalities to prevent the portal from becoming stale. If users are enjoying activity streams, consider how they can be made more powerful. Bring like-minded people together through tags and content rollups. Use content ratings to identify strong content, and to revise the content that is not up to the company's (or the team's) quality standards.

When considering new functionality for SharePoint, be sure to investigate capabilities that come out-of-the-box, such as the Publishing framework and its ultra-powerful content query web part. Be sure to investigate the power of SharePoint Designer and customized workflows, as well as advanced design interfaces (including InfoPath-based list forms and dataview web parts). Finally, be sure to investigate the SharePoint marketplace. Hundreds of vendors are making SharePoint solutions, some of which fit naturally into and extend SharePoint's social computing experiences. Custom-coded solutions will also extend the capabilities of the SharePoint platform.

Promoting, Animating, and Incentivizing

As a technology architect, it may be tempting to focus on the technology side of a SharePoint portal rollout. However, like any social computing initiative, SharePoint 2010 is ultimately about the people who use it.

A complete project involves the users from the beginning, and doesn't end at the deployment of the technology. There must be ongoing training and internal engagement initiatives that continually direct users back to the portal. Work with the corporate marketing or communications teams to send periodic e-mails announcing new functionality. Highlight clever team site innovations such as calendar mashups or graphical user interfaces (GUIs). Invite users to participate in online opinion polls and contests. Regardless of the functionality a SharePoint 2010 portal exposes to users, it will fall flat if no one visits.

Defining Clear Goals and Metrics

In a chapter focusing on social networking features, it may be odd to see a section that calls out goals and metrics. However, not knowing the destination is the surest way to get lost.

When planning a social experience, it may not be immediately apparent how to calculate ROI numbers in a concrete fashion. Instead, focus on the softer benefits, such as an increase in employee engagement, and how that improvement in morale translates into impacts in the business. Over the long term, watch for trends in spaces such as employee retention and job satisfaction surveys.

Now it's time to review a few generally accepted good practices.

GOOD PRACTICES

When considering a social networking solution, be sure to keep the following good practices in mind:

  • Build for your users — Before releasing anything, put the functionality before a steering committee or focus group to ensure that the users want what has been built. Identify any missing or wish-list functionality, and prioritize it on the backlog of tasks for the next phase of portal development.
  • Leverage SharePoint's social networking to reach everyone — Know your audience, and where they live and work. Do not design a solution that only meets the needs of the few. Instead, emphasize the social networking capabilities to turn the portal into a truly democratic experience with open tagging and ratings, blog comments, and wiki participation.
  • Marketing never ends — From before the launch of the portal to ongoing efforts to entice and involve users, never stop marketing the portal to the user base. This begins with messaging about the portal, extends to the name of the portal and its branding, and continues with the 360-degree feedback loop from users back to the portal development team.

SUMMARY

In recent years, an increasingly powerful paradigm shift in the software industry has been occurring as a reaction to end-user behavior patterns that have driven numerous studies and articles. Computer systems that used to focus on the input and reporting of data are now being designed to take human social behavior into account. This trend has been especially prevalent on the public Internet, giving rise to massive online communities such as MySpace and Facebook, as well as countless providers of blogs and wikis.

There are many names for the constituents of this software category, including social software, social computing, social media, social networking, and more. The goal of these social systems is to allow users to interact and share data with each other in order to facilitate human-to-human interactions, thereby enhancing the quality and availability of knowledge inside of the enterprise.

Contributing this paradigm shift toward socially connected online experiences on the Web are a host of online communication tools, including instant messaging (IM), text chat, forums, blogs, wikis, social networks, social bookmarks, and other social software design tools. Though these tools have been around on the Internet for years, they have recently begun to push their way into corporations in a phenomenon known as Enterprise 2.0, assisted by software applications such as SharePoint. When properly leveraged, tools such as SharePoint assist information workers in deepening their understanding of institutional knowledge through the discovery of otherwise hard-to-find information and relationships.

Although social software is a broad category, it is easiest to understand as an application that links a user's activity to his or her User Profile. This central User Profile is what provides the community of users a way to understand who they are collaborating and communicating with, and where their interests and activities align. This can most readily be seen within online social networks such as Facebook, where users contribute content that is then modified or commented on by other users. In this case, the User Profile functions as a conversation starter.

Another example is in the collaborative editing of documents, when one user makes a change that other users participating in the editorial process can quickly see and review. This interaction allows for a quick collaboration of ideas and thoughts without generating an overwhelming amount of content to keep track of. Though not typically considered a social activity by itself, editing and reviewing documents can certainly be considered a social process, especially when versioning and editorial handoffs occur and are tracked online.

This chapter has covered the following major social computing components of SharePoint 2010:

  • Personalization and My Sites through extensive use of the User Profile information
  • Colleagues, organizations, and memberships
  • Blogs and wikis
  • Tagging, ratings, and notes

Given an understanding of SharePoint's social capabilities, you then learned about key business challenges and advanced business scenarios. Finally, this chapter covered key architectural considerations and project approach recommendations, along with some generally accepted good practices.

Chapter 29 examines line-of-business services in SharePoint 2010.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.216.190.167