Category: Architecture

SharePoint or Application Architecture related posts

User Profiles – Driving Business Process

The workflow features first introduced in WSS 3.0/MOSS in 2007 and enhanced in the 2010 offerings present an opportunity for organizations with SharePoint to start to automate the coordination of their business processes.  While many have been working with it, one of the limitations I have seen is that everything is localized to a particular site or process.  In many cases there are configuration or user attributes managed in a local list that can be used as a data source. 

Manage the Data Centrally

One technique that is not widely used, but could greatly enhance the capabilities and manageability of the workflows as a whole would be to utilize the User Profiles more to house and maintain information relating to the users.  By managing it centrally it can be used by all processes throughout the organization.  For user maintained properties, it provides a central and secure mechanism for them to maintain it.  For system maintained properties, synchronized from an external system through AD or the BCS (HRIS, CRM, etc) there are already mechanisms in place to manage this.

In SharePoint Designer 2010 there is a new action that supports a lookup for a user’s manager.  This would be a critical component to support approval workflows obviously, but for most business processes there are other attributes that are also needed.  Some could be based on default user profile fields like Location or Hire Date, but others are likely to be custom to the organization.  Custom properties could include employee IDs, department charge codes, division identification, etc.  [Note: See User Profiles – Creating Custom Properties for a walk through] 

How to Access the Data

Typically the information is accessed via the API with UserProfileManager or the UserProfileService web service (/_vti_bin/userprofileservice.asmx).

InfoPath – From InfoPath you can identify a DataSource through a Web Service call pointing to the UserProfileService.  [Note: See Itay Shakury’s blog for full walk through]

Visual Studio Workflows – In visual studio with the full ASP.NET capabilities it is easiest and most effective to use the UserProfileManager to access the profile and all properties.

SharePoint Designer Workflows – With the exception of the manager lookup action that was added, SharePoint Designer workflows will need either a custom or third party action that can interact with the User Profiles. 

I am currently working on a simple action that I will blog about and post to CodePlex.

Other Uses – Delegation of Authority

This process could also be used to provide a mechanism for maintaining additional, more complex properties.  An example would be something like Delegation of Authority which allows a person of authority to be able to delegate (or pass) that responsibility to another person.  SharePoint does not handle this at all out of the box.  A series of fields could be defined to support this; Start Date, End Date, Delegate.  This information could be read into the discrete processes with management being centralized in the User Profiles.

The limitation with this model is that the User Profiles are not like a list and do not support advanced business rules.  If that is required a separate system would need to be build, but I would recommend you try and keep it centralized and not built into the specific process.

Summary

By leveraging the User Profiles as a central repository that can support your organization’s processes you will simplify the management of the information and make it much easier to reuse in a consistent manner across the many processes. 

User Profiles – Creating Custom Properties

The User Profiles in SharePoint Server represent a very robust and flexible way to manage information about the members of your organization.  It can be used to fill the roll of a searchable Employee Directory, used to drive business processes and workflows, and also makes it easier to find people in the organization based on their expertise and user property attributes providing social networking functionality. 

The default properties that are created at the time of installation are just a starting point.  In this article I will show you just how easy it is to create new properties that help support your organization and business processes. 

Planning The New Property

When defining new fields here is a selection of things to consider:

  • Name / Display Name
  • Type – Wide range of field types
  • Length – Cannot be modified in some situations
  • Configure a Term Store Set – Managed Meta Data
  • Policy Setting – Required, Optional, or Disabled
  • Privacy Settings – Field level privacy
  • Edit Settings – User maintained or administrator/system maintained
  • Display Settings – Show on View/Edit/Newsfeed
  • Search Settings – Support for a user Alias (i.e. Employee ID) and if it is Indexed
  • Profile Synchronization – You also have the ability to configure a synchronization with an external system (i.e. CRM, HRIS)

In many cases the options change based on the value of previous options.  A good example is based on the settings with the Type of string (Multi Value) or the Policy Setting.

Create Custom Property Walkthrough

Since I work in consulting, much of our content is very much client focused.  This is a great example of a property that would be very important to us, but not so important for the average company.  In my case, I want to allow consultants to add one or more customer names that they have worked with.  Since this valuable information could potentially be used for a number of purposes, (like tagging) throughout the entire SharePoint environment, I have decided to create a Managed Meta Data Term Set for this property so that we can reuse the content. 

Here is a quick shot of the Client List I created in the Term Store.

Define A Term Set

To create a new property, browse out to the User Profiles Service Application (or whatever your Profile Service App is named) and select the Manage User Properties link.

Manage User Properties

A full listing of the User Properties is displayed with properties organized into sections.  They can be ordered and placed into sections as needed.  To create a new property, simply click the New Property menu item.

New Property

Complete the main Property Settings.  In many cases changes to these settings cannot be made which means the previous property would have to be deleted and recreated.  In this case I created my Clients property and set it to a multi-value string separated by semicolons.  I then pointed it to the Client List Term Set previously configured.

Property Definition

The next set of fields control how the list is displayed and if it can be edited.  In this case, I want to make it an optional property and encourage consultants to maintain the value so I will enable it in each of the Display Settings.  It is not confidential information, so I will be sure to set the Privacy level to Everyone. 

Display and Policy Settings

Here is what the current profile looks like when rendered.  You can see that the Clients field is displayed and each value a link that feeds into the People Search.

Profile View

Once the values have been crawled and are available in the search index, you will start to see results in the people search process. 

People Search

Summary

By extending the User Profiles with custom properties you can leverage the robust platform to support an organization and its unique processes and content.

SharePoint 2010 Migration versus Upgrade

No doubt there are hundreds of companies currently reviewing or planning the move to SharePoint 2010 from previous versions.  The excitement and business interest around the technology is very encouraging.  Before picking an “upgrade” path though, I would encourage teams to compare the Migration paths in addition to the normal Upgrade paths. 

Migration Path

Taking a Migration path means you are going to build a new farm or environment and then move content to it.  There are many advantages to this approach, here are some to consider. 

Restructure Information Architecture and Design – The migration path gives you the ability to learn from past mistakes or to make changes to better suit the current set of requirements.  This opportunity does not come up often, so if changes need to be made, this is a good time to enact those changes.  Changes may include restructuring the web application and site collection topology as well as Taxonomies.

Incremental Move – Since you are moving from one farm to another it does not have to be completed at all once, you have the option of breaking the content down into smaller units that can be moved one at a time.  This is especially valuable in cases where custom applications might have been built that cannot be upgraded without rework. 

Take Advantage of New Features – There are some situations where after an upgrade it may be difficult or at least require more work in order to take advantage of all of the new features.  One great example of this is the new Claims Based Authentication model.  In the past though, I have seen other issues which were traced back to compatibility issues with site definitions.  Given the fundamental changes to the Publishing features in 2010, I expect there to be issues when people take an Upgrade path. 

The Downsides – There are costs to taking this approach.  It may take more time than an in-place upgrade and it definitely takes more planning.  There may also be software costs for migration tools which can help automate a migration.

Upgrade Path

The upgrade paths may mean you are using the same hardware, or at the very least you are moving the Content Databases which keep the Applications and Site Collection topology intact.  The main advantages include:

Quicker and Easier – It should not take as much planning, nor take as long to complete. 

The Downsides – All of your existing Site Topology, Security, and general organization issues are moved to the new platform.  The system may be difficult to administer and maintain.

Choosing the Correct Path

Both paths have their pros and cons and offer unique opportunities.  The right path is the path that helps your team meet its objectives within the constraints given.  Most IT leaders push for the regular Upgrade path because it is less complicated within the scope of the short term project, but they do not have the full picture of what the opportunity cost is or what the long term impact will be.  It is implementation team’s responsibility to educate the decision makers as much as possible so that the best decision can be reached.

Related Posts

Unlocking The Potential of SharePoint With Remote Access

I have been putting a lot of work lately into some general 2010 presentations and one of the messages I’m really concentrating on is Connect anywhere, from any device, with any browser.  I think this is a critical ingredient in enabling SharePoint to be a great Unified Business Collaboration Platform.  It comes down to removing all of the unnecessary hurdles of accessing and working with the content in a secure manner.  While there are some technical changes that were made such as better support for mobile devices and true standards support allowing cross-browser consistency, the real change for me is philosophical.  Until recently I have been somewhat uncomfortable opening up internal portals and content to the internet.  My biggest fear has always been network security.  Gateways like ISA, now Forefront Threat Management Gateway (TMG), are not new but many IT groups have had difficulty implementing them or managing them effectively so I have not pushed for them in many of my implementations unless it was needed to fulfill a requirement.  With the Connect Anywhere, from any device, with any browser mantra in mind that will no longer be the case.  I will now advocate for secure access to be provided wherever possible without the requirement to connect via VPN or be on the local network.  This enhanced access will easy collaboration for remote workers and has the potential to speed up the collaboration process in addition to making it richer. 

If your organization is not sure how to implement or configure one of the gateway applications, seek out experts in the form of consultants or community members that are able to help.  You users will thank you for it!

Integrating Open Source Software and Components

Over the past few years there has been tremendous progress in making many components and solutions available in the open source markets like CodePlex, SourceForge, or even individual blogs and sites.  Many of these are community driven projects supported by individuals, with some by commercial companies.  For some reason many companies avoid or strictly limit allowing these solutions to be installed or used.  When approached properly I think these solutions should be considered.  This article will cover the advantages as well as outline an approach to make take when evaluating which solutions to install and how to test them.

Advantages

The first advantage of implementing any solution is that it should make it much quicker to solve a business problem.  In some cases it might be a complete solution, like commercial software components, but at the very least it should act like an “accelerator” offering you a springboard to the final solution.  One advantage that it has over commercially packaged systems is that you have the source code in case changes, additions, or fixes need to be made. 

Another advantage is that it can expose the development team to different coding techniques so that they can better address similar problems in the future.  Microsoft has been providing sample databases and applications for years for this very purpose.  People tend to learn more by seeing examples in action versus class diagrams.

Review Project Status and Activities

Not all solutions are of the same quality and grade.  In some cases there are a few quick samples while in others there was a more formal project with full QA that has gone through multiple release cycles.  It is therefore important to review things like the product status and release number.  It is also important to review the Issues log to see how much activity there is and how quickly issues have been addressed.  You can typically get a good idea about how widely it is used.  In some cases you may be familiar with the developers which offers the advantage of discussing questions and issues directly with them.

Approach to Testing

To increase your chance of success and mitigate risk, it is important to always fully test the components to meet both functional and performance testing.  With commercial software the expectations are normally pretty high, but I would approach this as if a member of the project team produced it even if no changes were made.  This includes specialized testing like the “DisposeCheck” tests typically done to custom code that interacts with SharePoint’s API. 

Final Notes

When expectations are properly set, and the solution is fully reviewed and tested, including these open source solutions can contribute to the team’s ability to effectively deliver solutions quickly.

Related Articles

Finding the Sweet Spot with Process Improvement

Today while visiting a grocery (super-)store I witnessed a strange event in the parking lot where a couple of guys were “pushing” carts.  This is something I did in high school so it is a task I understand very well.  They had a 60’ plus train of carts along with a motorized device at the end that helped to push which is what grabbed my attention.  My assumption is that since they had the motorized device (technology innovation) they could take on more work (process efficiency).  What I witnessed was something completely different.  I watched them for well over five minutes.  In that time the train grew and grew and became very difficult to manage.  You can also imagine that a 60’ train of carts in a busy parking lot blocks quite a few cars, including my own.  From my time of pushing carts I knew what a manageable load was and that it was often more efficient to manage smaller subset of work.  In the time I watched them in this farce, the two individuals without the aid of any motorized cart should have been able to collect and return twice what they ended up collecting without unconvincing any of the customers by blocking them in.

This story is a great example of what happens when you overuse technology in an attempt to increase business efficiency.  It is important to look for the sweet spot, adding just enough value without overbuilding or you will see diminished returns. 

I’m sure everyone that has worked with workflow or Business Process Management (BPM) for any period of time will have lived through projects that went passed the sweet spot.  It is not always as clear as the shopping cart story above.  In my experience it typically comes from either trying to automate too much in a previously manual process or from trying to handle too many process exceptions.  One of my favorite things about process improvement is that it is not a one cycle process.  You go through iterations of improvement and continue to tighten up the process.  With this iterative approach it affords the team some time to automate the manual processes and helps the process mature a bit before you try and handle all of the potential exceptions. 

In one project where clearly things had been taken too far, the team had spent a pretty substantial amount of time working through all of the different types of process exceptions.  I think there were eight possible paths at one point.  After the process went live we ended up finding that a few of the paths were never followed, and a few others were followed fewer than 3% of the time.  Clearly mistakes had been made and the process was overbuilt.  Working in a few steps that were a bit more generic and only partially automated would have been a better alternative.  By planning smaller, more focused iterations you will show value quicker and make it a lot easier to plan the next improvement cycle. 

Service Applications in SharePoint 2010

I’ve spent a fair amount of time recently getting up to speed with SharePoint 2010.  One of the features that surprised me the most is the new Service Applications framework. 

TechNet defines Service applications as “a resource that can be shared across sites within a farm or, in some cases, across multiple farms.”  Previously resources were shared between sites using the Shared Service Provider (SSP) model.  The SSP model worked fairly well with simple deployments but little information was available for complicated distributed deployments which led to a lot of frustration.  In addition, one of the big complaints was that the SSP was only available for MOSS versions and was not available for WSS.  The Service Applications framework has been built directly into Foundation services which makes it available to all flavors of SharePoint. 

A Modular Approach

SharePoint Server 2010 ships with services for all of the main MS Office apps, Search, User Profiles, Managed Meta-Data, Performance Point, and BCS.  Not only can you define which applications are configured, but you can manage the associations so that the applications can be exposed to specific SharePoint web applications.  Since it is possible to deploy the same service multiple times you can support different configurations and authentication models to support more complex deployments.  In addition there are situations where you can use FAST search on some applications and regular Search on others in the same farm.  There are an unlimited number of deployment possibilities.

SharePoint 2010 Service Applications

Since the framework is open this provides real opportunities to the ISVs in areas like vertical applications in just about every area.  Some of the ECM and BPM vendors have been heavily integrated with SharePoint for years so I think this can only make their offerings that much more powerful.

Another advantage to the modular approach is that it is possible to for both Microsoft and the ISVs to provide new services or service versions outside of the typical long release cycle.  I’m hopeful that this will enable some of the currently evolving technologies and features to catch up. 

Planning Considerations

In some recent articles I outlined some considerations for Site Topology Planning [Article 1, Article 2].  In addition to segmenting the applications and sites therein, you will also want to start to draw out the service associations as well.  For example you can determine how many search or user profile providers do you need.

All of this segmentation does has a potentially negative side effect.  Each of these services has its own database and potentially its own IIS Application Pool, which best practice dictates has its own dedicated domain account.  It is easy to see how the number of accounts, application pools and databases would get out of hand.  This was a common complaint I heard in many smaller environments with MOSS, and it is exponentially worse with 2010.  In my opinion the new model has many more advantages than disadvantages.  I will not let a few extra databases and accounts influence my application and service association decisions. 

Summary

The Service Application model in SharePoint 2010 offers up a lot of flexibility and expandability allowing implementers to tailor the deployment to the specific business needs.  I encourage everyone to evaluate the new model thoroughly before making any upgrade or migration plans in order to maximize the value of the new services.

%d bloggers like this: