InfoPath and UserProfileServices: what can be done…

Guest Author: Pascal Poeck
SharePoint AfterWork

Most of the time, when I use InfoPath forms in SharePoint, I need to capture the current user name to put it on my form. Nothing very complicated about that but this time I want to retrieve the other properties of my user that I can find in my Active Directory. The idea is to create a kind of badge that I will use on the Human Ressources page of my Intranet like this one:

As you can see, all of the fields on my form come from my User Profile, even the picture. The first thing that you need is, like always, to create a new list in SharePoint but you can also use a Form Library if you want. I’ll assume that you can do that by yourself so I will skip this step (basically you just need a custom list with one column for the name of your badge, nothing more).

Now that your list is created, you can customize it by clicking on the “Customize Form” button on the ribbon (in the “List” tab). Before you customize your form you will need to create a Data Connection in InfoPath to catch all the fields that you need. Click on the “Data Connections” button in the ribbon (under the “Data” tab) to open the Data Connections window and follow these steps:

  1. Click on “Add” to add a new data connection
  2. The connection is suppose to receive data (from your AD), so you just have to click on the “Next” button
  3. Click on “Next” to use the SOAP Web Service
  4. Enter the location of the SOAP Web Service definition which is http://servername/_vti_bin/UserProfileService.asmx
  5. Scroll down in the “Operation” window and select GetUserProfileByName. Click on “Next”
  6. We don’t need to specify what parameters are sent to the method, so just click on “Next”
  7. Click on “Next”
  8. Give a name to your Data Connection and click on ‘Finish”

Ok now we can customize the form so select the table and delete it. We will create a new table based on 3 columns and 6 rows by using the “Custom Table” button in the ribbon (under “Insert” tab).

Select the first row and merge all three fields in one. Do the same for the last row and for the first column so you have a table like this one:

  • Enter a title for your form in the first row.
  • Click inside the first cell on the second row and add a Picture object from the ribbon.
  • Click on the “Field Properties” on the ribbon under the “Control Tools” tab.
  • Click on the “Fx” button next the value field
  • Click on the “Insert Field or Group” button
  • Select the data connection created before in the Fields dropdown
  • Expand all to get the “Value” field (the last one) and click on “Filter Data”
  • Click “Add” and choose “Select a Field or Group” in the first cell
  • Click on the field “Name”
  • Set the second one to “is equal to”
  • Select “Type Text” in the third and enter the label “PictureURL” (be carefull it is case sensitive)
  • Close all the windows by clicking on “OK” everywhere.

That’s it for the picture. Do the same for the other fields that you want to have on your form. The only difference is that you have to put a “Text Box” in place of a “Picture” control and also that you must use another label than “PictureURL”. Here is the list of the default properties that you can use with the web service GetUserProfileByName:

UserProfile_GUID
AccountName
FirstName
LastName
PreferredName
WorkPhone
Office
Department
Title
Manager
AboutMe
PersonalSpace
PictureURL
UserName
QuickLinks
WebSite
PublicSiteRedirect
SPS-Dotted-line
SPS-Peers
SPS-Responsibility
SPS-Skills
SPS-PastProjects
SPS-Interests
SPS-School
SPS-SipAddress
SPS-Birthday
SPS-MySiteUpgrade
SPS-DontSuggestList
SPS-ProxyAddresses
SPS-HireDate
SPS-LastColleagueAdded
SPS-OWAUrl
SPS-ResourceAccountName
SPS-MasterAccountName
Assistant
WorkEmail
CellPhone
Fax
HomePhone

As you can see, there are no properties that show the complete name of the user but you can also use the function called “concat” to concatenate the FirstName and the LastName like this:

concat(Value[Name = "LastName"]; ” “; Value[Name = "FirstName"])

In the future I will extend this form to add some features like Vacation Request or TimeSheet but I’ll keep that for later so stay tuned.

Guest Author: Pascal Poeck
SharePoint AfterWork

Pascal Poeck is a Team Leader SharePoint for an IT company based in Luxembourg specializing in SharePoint Technologies and RIA. He is also a Microsoft Ignite Trainer for SharePoint 2010, since november 2009 (IT Pro track), and a MCTS for SharePoint 2007 (DEV and ITPro). Pascal’s goal is to demonstrate how you can use SharePoint to provide a rich user experience with a minimum of code.

[tweet]

SharePoint Solution for Interdepartmental Business Process – Phase 1: Form Initiation

Background

We are a specialty commercial insurance company (Excess and Surplus Lines) that was acquired/merged with a larger corporate parent a couple of years ago. We continue to be challenged by the need to make our processes and practices more transparent to our parent company, especially since they have no experience with the type of business we write. Over time we have developed thousands of policy forms specific to our niche market. The process surrounding form creation, use and maintenance is a primary company function.

The Regulatory department is responsible for storage of policy coverage forms (mostly Word and Excel files) in an aggressively permission-protected file share we call the Form Library. They are available in read-only format to most associates. To facilitate navigation of the library, the forms were catalogued in a massive Excel spreadsheet by one dedicated Regulatory associate (RA). Key fields about each form were captured (such as form number, line of business, description, effective date, cross reference, and states in which that form had been filed).

This RA spent hours each day updating the spreadsheet, digging into folders/subfolders to find forms, emailing status updates and generating other communications to various managers/executives/colleagues pertaining to form activity. She was the sole point of contact for this data, causing bottlenecks and slowdowns if she simply took a vacation day. With the increase in activity following our company’s acquisition, it was only getting worse. The associate knew enough about SharePoint to recognize its potential and wanted a better way to leverage the untapped resource that the spreadsheet represented. She came to me with a request to transition from the Excel spreadsheet to SharePoint.

Her request led to creation of the Forms Portal, a SharePoint site designed to replace the Excel spreadsheet and facilitate access to its valuable data to the whole company. The decision was made to not place the documents themselves into SharePoint, but to link to them from the list we now called the Form Catalog. Now, anyone could find out with just a click when a form was created, get cross-reference information, open the form itself, or any of a dozen inquiries that previously required them to go through Regulatory.

Each list item in the Form Catalog contained the columns present in the original spreadsheet, along with new fields and calculated columns which passed even more data on to the users. Versioning added yet another layer of information. Soon we had built workflows for email communication, a search function, supporting document attachments and much more than was ever possible using just Excel. (The launch of the Forms Portal as a vehicle to present the Form Catalog to the company paved the way for everything to come, and we owe a lot to that one associate for her foresight and desire to find a better way.)

With this foundation laid, the next project to emerge from the Forms Portal dealt with the Forms Process itself. In very simple terms, the Forms Process involves the crafting of language for a new policy form (or changes to an existing form), often in response to a specific event or industry trend. Once the language is written and approved for use, it is then made available to the brokers and agents through whom we market our business.

Within our company, it was well known that the Forms Process was ripe for improvement. Once we were acquired, this reached critical mass. SharePoint was first suggested as a possible solution in late January 2010, when automation of a specific feedback sub-process was requested by the underwriting department following launch of the Form Catalog. As research into the requirements proceeded, it became clear that dealing with a single sub-process was not going to achieve anything. We had to attack the entire beast.

Project Preparation

Up to now, my SharePoint projects were handled without benefit of a dedicated PM or BA- I do everything! My first step here was to request that a project manager get between me and the business users. I cannot stress how valuable this was, and what a relief it was not to have to wear both hats and field every question. I knew I could never tame this tiger alone.

It is very difficult for me to take off the “solution developer” hat and put on the project manager hat. My first instinct is always to jump right in and try to fix whatever they bring to me. Often, though, that’s not the right response. My PM was great at keeping the focus where it needed to be and weeding out “nice-to-haves” from the “must-haves.” (An added benefit was the fact that she’d been with our company over 15 years and already knew every player and every relationship quirk!)

The first thing my PM did was an analysis and documentation of the entire Forms Process, start to finish, as it currently stood. This took several weeks, during which she interviewed participants at each point in the process and recorded “who did what” at every step. The result was a 20+ page document detailing the involvement of individuals at every level in nearly every department in the company. This was a massive undertaking that was in itself a remarkable achievement. Next came my evaluation of their process document. I had two primary goals- first, to make sure I had a thorough understanding of the process; second, to determine SharePoint’s potential value within that process. For me, this was the true beginning of the project. I looked for potential breakdowns in communication, reliance on email chains, approval steps, feedback loops and other areas where I thought SharePoint could help. From that analysis, we sat down to draw up our project objectives.

Project Plan

My analysis of their documentation identified three distinct phases in the overall process:

  • Phase 1- Form Initiation: In response to awareness of an industry trend or specific need, a new policy form (or a change to an existing form) is required. The goal of this phase is approval of the form language by the Forms Committee.
  • Phase 2- Form Implementation: Business users across multiple departments further refine, adapt and communicate about the form. The goal of this phase is to prepare the requirements needed by IT for the Production phase.
  • Phase 3- Form Production: The Production phase contains the steps that enable the form to be made available for use. The goal of this phase is successful IT deployment of the form to all software application(s) from which it will be accessed by associates and agents.

Our initial action plan for each phase was:

  • Meet with key participants
  • Confirm our understanding of their part of the process (based on the original process documentation)
  • Identify “pain points”
  • Brainstorm potential SharePoint solutions

Phase 1

We began with Phase 1, Form Initiation, which is “owned” by the Regulatory department and is actually a precursor to the Form Catalog process described above.

Process:

  • One of two regulatory associates (RAs) receives the new form request (usually from one or more Underwriting Managers, or UWMs). This request constitutes the initiation of a form project.
  • The RA handling that project coordinates the drafting of and collaboration on the form language and confirms state filing requirements leading up final approval for use.
  • At that time, the form is placed in the form library, added to the Form Catalog and released for company/agent use.

All that activity was- you guessed it- maintained in Excel (NOT the same Form Catalog spreadsheet mentioned above; in fact, each RA had their own individual spreadsheet tracking only their own work). More silos!

Unsurprisingly, our interviews revealed the most commonly listed complaint was“I need to know the status of my form project.” The UWM requesting the form was very often doing so in response to a specific industry mandate, meaning the company risked fines or other consequences if the form was not ready by a specific, inflexible target date.

Currently, the only way for the UWM to get form project status was to call, email or stop by the desk of the RA handling that form’s development. The RA would then have to open his personal tracking spreadsheet, pull out the relevant status information and follow up by composing an email/returning a call/having a conversation with the relevant UWM. Often all three follow-up methods had to be employed. As you can imagine, dealing with these requests for information was as much a burden on the RAs as the lack of information was on the UWMs.

Specific features requested for the Phase 1 solution included:

  • At-a-glance indicator showing a colored icon reflecting proximity of Target Date to current date
  • Ability to generate a “detail view” for each project, including a link to send email and a link to view status notes
  • UW-division-specific filtered views to allow users to directly access data most relevant to his/her line of business
  • Workflow to send alert email project owner when his/her project was completed
  • Permission specifications restricting access to the data and to the pages displaying the data

My recommendation was a dashboard-style solution to gather, track and display form development status data in SharePoint. This would allow UWMs access to self-serve status updates as well as free up the RAs from tedious status follow-ups, replacing their “spreadsheet silos” with a one-stop data management interface both RAs could access. In addition, SharePoint Designer workflows would be configured to send custom emails triggered by key status changes.

1. Excel data SharePoint list

First we needed to create a dataset to use in our dashboard solution. I received a copy of the RA tracking spreadsheet and transformed it into a SharePoint list following a series of meetings with key individuals.

  • This was more complex than you may think, as it required process participants to understand and accept that “their” spreadsheet was now serving several purposes.
    • The transition from “ this is my data” (existing only to meet my needs and not subject to anyone else’s input) was now the basis for a dashboard open to a wide pool of users, some of whom were in a position to set additional requirements.
    • One individual in particular struggled a great deal with a perceived loss of control in terms of this data. He found it difficult to acknowledge the greater good that would be achieved by this transition. Fortunately we were able to persuade him that what would be gained was worth the inconvenience, and he eventually became one of my biggest supporters.

    In addition to the existing spreadsheet, several fields were added in response to requests from various consumers of the data beyond the original Regulatory users.

  • The list had versioning enabled and included a Notes field to allow time-stamped status notes from RAs.
  • Access to data is limited to process participants, therefore a “Product Development Dashboard” SharePoint Group was created to facilitate access to the data
  • List permissions:
    • RAs responsible for the data: Contribute
    • “Product Development Dashboard” SharePoint Group Users: Read-only
    • All others: Access denied

2. “Product Development Dashboard” web part page

The audience for this data consisted of users throughout the company in various Underwriting divisions. Discussions across the user spectrum gave us specifications for a default view for the dashboard; once established, that was used as a basis for additional configurations based on UW division.

  1. Web Part page for default view
    • Created Web Part page titled PROJECTS.aspx
      • Set page permissions based on user role
      • Page permissions
    • Access to data is limited to process participants, therefore a “Product Development Dashboard” SharePoint Group was created to facilitate access to the Web Part page
    • Only users who were members of this Group would see the link to the Dashboard from the Quick Launch menu of the Forms Portal Home page.
  2. Web parts and other content present on PROJECTS.aspx
    1. Header with instructions and links to other filtered views
    2. List view web part (LVWP) displaying default data in the following configuration:
    • Filtered by Status (show only Active items)
    • Items grouped by Status to show subtotals and sorted by Target Date ascending
    • Display following data fields: (all column headers enabled for sort/filter):
      • Radio button (allowing Connection to Detail View DVWP)
      • ID
      • Indicator: HTML calculated column for KPI-style icon (red, yellow, green) based on proximity to Target Date

      This is enabled by adapting some code courtesy of Dessie that captures the current date (TODAY) and compares it to the Target Date, then displays one of the following:

    • If Target date = TODAY, red exclamation point icon; mouseover shows message: “Target date is TODAY
    • If Target date < TODAY, red icon; mouseover message: “OVERDUE
    • If Target date is 1-3 days away, yellow icon; mouseover message: “Target date is…”
      • “… Tomorrow”
      • “… in 2 days”
      • “… in 3 days”
    • If Target date is more than 3 days away, green icon; mouseover message: “Target date is 3 or more days away
      • # of Forms: How many forms does this project represent? (Number)
      • Form number: Text field
      • UW Division: Choice field
      • Owner: People & Groups field
    • Date fields:
      • Initial date: Date project was initiated
      • Target date: Date set for completion of the form project
      • Committee date: Date the form was sent for review by the Form Committee
      • Draft date: Date the draft form language was sent for approval
      • Production date: Date the Production language was sent for approval
      • Data view web part (DVWP) “PROJECTDETAIL” connected to the above LVWP to allow display of a single item’s detail; conditional formatting further enhanced delivery of data
      • When radio button is selected in the LVWP table, the DVWP shows a Details view for that specific project alongside the LVWP:
      • Status field value is conditionally formatted by color (Active = green text, etc.)
      • Link to a custom item display form displaying all project notes for user to review
      • Email link- opens a new email to the assigned RA, with the Project Name pre-populated in the Subject line
      • Date field specifications and conditional formatting:
      • If any of the 4 date fields listed above do not have a value present, they are hidden via conditional formatting.

        Date field values that are present allow display of the calculated number of working days elapsed between the 2 dates (also courtesy of Dessie)..

      • There are set lengths of time pre-established as optimal for each stage.
      • If the calculated number of elapsed working days for that stage exceeds recommended length of time, that value appears in red (conditional formatting)
  3. Additional Web Part pages were created based on the specifics shown above for additional hyperlinked views:
    • My Projects: All projects where Owner = Current User
    • UW Division: 4 pages; each filtered on the value present in UW Division field
    • Non-Active: Projects in a non-Active status (Completed, Cancelled, etc.)

Phase 1 Summary

The configuration described above allowed any user who was a member of the Project Dashboard Group access to real-time data for all Form Projects in development at any given time. If, after viewing all the available data, Notes etc., the user still needed more information, he/she could contact the RA and dig deeper.

In the months following implementation of this content, the Regulatory RAs reported a significant decrease in time spent responding to non-critical requests for information. The end users reported a high level of satisfaction resulting from immediate availability of data.

Following completion of an item in Phase 1, an RA would create an item in the Form Catalog for the newly-created Form and send a notification to the company that a new form was available for use. Recipients of that email (primarily Underwriting managers) would then evaluate the information about the new form and determine whether it would be applicable for their line of business. If so, the UWM would proceed to Phase 2, Forms Integration.

Guest Author: Nancy Skaggs

Nancy came relatively late to the party but now no one can get her to leave. Since talking her way into IT a little over two years ago, Nancy still considers herself a newbie. Learning from the great contributors on EUSP helped her get this far and Nancy is glad to have a chance to give back.

[tweet]

Provisioning sandbox compatible SharePoint 2010 site templates

One of the easiest ways to create site template with custom features, is to use existing template available through your cloud provider and extend it with your customizations. This way you know you’re not building something that potentially has dependencies on functionality not available to you.
 
Let’s take a look at how we can extend an existing cloud hosted team site template and attach an event receiver to the announcements list of the customized version of the team site.
 
1. Create an instance of the site using a template you would like to extend.
2. Click Site Actions -> Site Settings -> Save site as template
3. Provide the template name and the file name. Remember the template name will be displayed to the user.
4. When saved, you will be given a link to the solution gallery http://[site url]/_catalogs/solutions

5.  Download the file from the solution gallery to disk.
 
Now that we have the solution file we will extend it in Visual Studio:
 
1. Create new Visual Studio SharePoint 2010 project of type: Import SharePoint Solution Package
2. Accept all defaults and select the downloaded file for the template
3. After the import has completed, we’ll pick the announcements list and add a new project item to the Announcements folder of type Event Receiver
4. In my case the only logic is going to be in the ItemAdding event looking like this:
 

5. Ensure in the Elements.xml of your receiver you’re binding to the right item type, in our case announcements type:
<Receivers ListTemplateId=”104″>
….
 
6. Trigger the Deploy of the project to generate new WSP file
7. Upload the new file to the solutions gallery of your cloud hosted site collection:
http://[site url]/_catalogs/solutions
 
8.  Activate the solution.
 
Now the new site template with our custom logic will be available for the users in the Create new site user interface.
 
 
In our case, the only custom logic we added is to trigger addition of current time when the new announcement item is added in the instance of the web based of our template. However, you can add new items, lists, or most of any other custom logic you would expect to do in the custom site template.
 
Give it a try!

Exception handling with SharePoint – Part 1: Overview

Indeed exception handling doesn’t prevent errors in general. And exception handling itself is also just a part of a more abstract subject you can call error checking and handling. Errors do occur and the amount of the ones which are found increases with the amount of users using your application. During development you are able to identify and resolve errors quickly… but as soon as you go to the staging or production environment it will be more complicated to identify errors.
 

Correctly done error checking and exception handling is an important part of your application to diagnose and resolve issues. So at the end of the day my life as a developer will be easier.

 

Note: All resources used will be listed in part 4.

 

Example

Let’s clarify my statement with the following example. We have a visual Web Part with a registration form for a sports event where people can register using the first name and last name.

 
 
 
 

This is the code executed by the submit button:




 

 

The unregister button runs the following code (with an intentionally wrong id provided in line 7):




Ok it’s not the best code example but as you can see there can be a lot of errors in a few lines of code. We get an error if:
  • the list has been renamed,
  • the Web Part is used at a different site or web,
  • the user doesn’t have the permission to add new list items,
  • ,
  • you access an item
  • which doesn’t exist,

 

 

It isn’t very hard to imagine real world use cases where this applies in some way. But now we use exception handling and everything is fine, isn’t it?




 

 

Sometimes you get an error message you understand:

 
 

As you have guessed it’s not that easy. Usually you will get error messages looking like this:

 
 

If you have hundred lines of code this error will be very hard to find. The second part will show you an approach how to do error checking in a more precise way.

Summary

Exception handling hasn’t the purpose to make your solution bug free… it’s impossible to think of all possible problems that might occur. Instead error checking and exception handling should be used for diagnosing issues if you don’t have the possibility to use a debugger.

 

Productive development of SharePoint 2010 Web Content Management solutions with CKSDEV

​Developing Web Content Management (WCM) solutions on the Microsoft Office SharePoint Server (MOSS) 2007 platform was really challenging. And I’m not talking here about taking care of delivering web standards compliant XHTML, implementing accessibility or making the website lightning fast. I’m talking about the development process itself: from creating the very first custom Site Column to deploying the Solution. There were several tools, none of which fully integrated with Visual Studio or provided a consistent approach. At the end of the day we – SharePoint 2007 developers, became wizards doing the magic of manual tips & tricks and combination of various tools every day just to get the job done. Just recently, when SharePoint 2010 shipped, Microsoft provided us with the new Visual Studio 2010 SharePoint Developer Tools. And although they are called tools, they are more than that. In fact Microsoft provided us with a framework for building developer tools. A new era has come.

Hi, my name is ‘Community Kit for SharePoint: Development Tools Edition’

Before we buckle up and start the engine, let’s have a quick glance at what CKS:DEV is. This will help you understand how different options that we will discuss later on, work and how they could be extended even further.

What is CKS:DEV?

Community Kit for SharePoint: Development Tools Edition, called CKS:DEV for short, is a set of extensions built on top of the framework provided with the new Visual Studio 2010 SharePoint Developer Tools. In the Wave 14, as the release of SharePoint 2010 and Office 2010 is being often referred to, Microsoft has invested in improving the developer experience. As a result we are provided with not only a great set of SharePoint tools, but also a platform that allows us to create new tools that fully integrate with Visual Studio 2010. In fact all standard tools that Microsoft provided us with out of the box, are extensions themselves, proof that the framework really works.

CKS:DEV is a set of extensions for the new Visual Studio 2010 SharePoint Developer Tools. Taking into account both SharePoint Foundation 2010 and SharePoint Server 2010, there are also two versions of CKS:DEV, so you can use it for virtually any kind of SharePoint 2010 project that you’re working on.

What’s in the box?

Extensions provided with CKS:DEV can be divided into four core areas: Environment, Exploration, Content and Deployment. Enhancements to the Visual Studio environment include the new SharePoint References tab available on the Add Reference dialog, allowing you to easily reference any SharePoint assembly without searching the file system or GAC for it. Exploration extends the new SharePoint Explorer with advanced information about SharePoint sites such as the installed Web Parts and Master Pages or the Feature dependencies and elements. Also included in the Explorer are a variety of import functions to bring existing SharePoint items into your active solution. The Content area includes advanced templates such as Linq to SharePoint, Custom Action or Delegate Control. Templates include the SharePoint Full Trust Proxy and the SharePoint Console Application. The  enhanced Deployment functions give you the ability to utilize quick deployment and almost a dozen other productivity enhancing deployment steps, including automated deployment (per file on change deployment).

For the complete overview of all the CKS Development Tools Edition features go to the CKS:DEV project CodePlex site at http://cksdev.codeplex.com.

Getting productive with CKS:DEV

Now you know what CKS:DEV is, let’s have a look how it can help you getting more productive while developing Web Content Management solutions on the SharePoint 2010 platform. For the purpose of this article we will use a demo Solution called CKSDEV.com site, which is an Internet-facing website that provides the details about the CKS:DEV extensions, the project team, etc.

Creating Site Columns and Content Types

Probably the very first step of every WCM solution on the SharePoint platform is creating custom Site Columns and Content Types. In this step of the development process you’re laying out the foundation for storing information on your website. There are many approaches to creating Site Columns and Content Types and including them in your Solution. If you are a CAML wizard, you might consider doing it all manually and create all Site Columns and Content Types definition manually. On the other hand, if you are a lazy developer, you might be using some kind of tool which would allow you to peek into SharePoint and get all the information that you need in order to create the Site Columns and Content Types, but still you would semi-manually wrap it all up in SharePoint assets. If you are a productive developer however, you might want to keep reading…

On the CKSDEV.com we want to be able to store press releases, information about the team members and we want to be able to create some general pages. To be able to do this we will be provisioning the following Content Types:

  • CKSDEV Page
  • CKSDEV Press Release
  • CKSDEV Team Member

Additionally we will need the following custom Site Columns which will be used by our Content Types:

  • PressReleaseDate
  • TeamMemberPicture
  • TeamMemberBio
  • TeamMemberCompany
  • TeamMemberWebsite
  • TeamMemberTwitter

Since at the moment there is no Site Columns and Content Types designer available in Visual Studio 2010, probably the easiest and the fastest way to configure the Site Columns and Content Types is using the SharePoint Web UI.

CKSDEV.com Content Types configured in SharePoint CKSDEV.com Site Columns configured in SharePoint

Now everything is in place, it’s time to start using Visual Studio.

Visual Studio 2010 SharePoint Developer Tools allow you to browse the Content Types available within your site. CKS:DEV extends this capability with grouped view of Content Types (similar to what you see in SharePoint) and the ability to import Content Types but also complete Content Types Groups into your SharePoint Project. Additionally CKS:DEV allows you to browse Site Columns available within the site together with the ability of importing them into your project.

You can find more information about the Site Columns and Content Types capabilities of CKS:DEV in the articles: CKS:DEV now with support for Importing Site Columns (http://blog.mastykarz.nl/cksdev-support-importing-site-columns/) and CKS:DEV soon with even more support for Content Types and Site Columns (http://blog.mastykarz.nl/cksdev-support-content-types-site-columns/).

So instead of manually creating Site Columns and Content Types let’s get productive with CKS:DEV. First let’s import the Site Columns. You can do this by opening the site in the Server Explorer and navigating to the Site Columns node. Then you can import the Site Columns by clicking right mouse button on the CKSDEV.com Columns group and choosing Import from the menu.

Importing the CKSDEV.com Columns into the project using CKS:DEV

You can import the CKSDEV.com Content Types using the same approach. As you can see all Site Columns and Content Types have been imported with just a few mouse clicks and not a single line of XML.

CKSDEV.com Site Columns and Content Types imported in the project

Creating Master Page and Page Layouts for CKSDEV.com Content Types

Once the custom Content Types have been designed we can proceed to the next step which is creating Master Page and Page Layouts. CKS:DEV has two surprises for us here.

Did you know that you can create your custom Master Page with CKS:DEV in a matter of minutes? Usually you would add a new file to your project, copy the content of the Master Page from an existing Master Page and after you’d removed everything that doesn’t belong there, and you would manually configure the packaging and deployment of the Master Page. CKS:DEV ships with a new SharePoint Project Item Template called Starter Master Page that contains everything that’s necessary for you to create a custom Master Page, including the packaging and deployment. The only thing left for you is to copy & paste the HTML from your branding and you’re done!

Starter Master Page SharePoint Project Item Template provided with CKS:DEV

Once the Master Page is done let’s proceed with creating Page Layouts for our pages.

Creating Page Layouts in SharePoint 2007 was a tedious process. This had partly to do with the fact that probably the only reasonable way to do it was using SharePoint Designer. Because SharePoint Designer understands SharePoint Content Types it allows you to drag and drop all the field controls associated with the underlying Content Type, which is better than guessing the types yourself and typing it all manually. Unfortunately SharePoint Designer 2007 had this notion of knowing better than you what kind of markup you needed and often you ended up with something else than what you meant… While SharePoint Designer 2010 has been improved a lot, CKS:DEV presents you an even better way of creating Page Layouts.

CKS:DEV allows you to generate a Page Layout for every Publishing Content Type. You can generate a Page Layout by selecting a Content Type in the Server Explorer, clicking right mouse button on it and choosing Create Page Layout from the menu. Using the information about the Content Type, CKS:DEV will generate a Page Layout for you. Great thing about the generated Page Layout is that it contains both display and edit controls for all Columns associated with the given Content Type so the only thing left for you is to remove controls that you don’t need and add the HTML markup with your branding!

Generating Page Layout for a Publishing Content Type using CKS:DEV.

Quick editing of assets

While working on WCM solutions on the SharePoint 2010 the odds are high that you are frequently changing files like CSS, JavaScript, XSLT, Page Layouts and Master Pages. Although those files are included in the package, if you care about your time like I do, you probably edit the files deployed to SharePoint for quick changes without performing the full deployment every time. The problem with approach in SharePoint 2007 was that using SharePoint Designer was the only way to edit files deployed to a SharePoint site. So in order to do get the job done you had to either had two applications open all the time (Visual Studio and SharePoint Designer) or you had to go through painful deployment all day long. The situation in SharePoint 2010 didn’t change that much: you still need SharePoint Designer to edit files from SharePoint. The great news is though, that CKS:DEV introduces a mechanism that allows you to edit files deployed to SharePoint directly from Visual Studio!

CKS:DEV supports editing of a few kinds of files. Using the Server Explorer you can edit files deployed to the Master Page Gallery, Style Library and Web Part Gallery. CKS:DEV allows you not only to edit files located in those Document Libraries but also to perform common actions like Check Out, Check In, etc.

Editing files deployed to a SharePoint site using CKS:DEV.

Allowing you to edit files deployed to your SharePoint site, makes it easier for you to make quick changes and see their results in SharePoint, and all that from a single application: Visual Studio 2010.

Importing configured Publishing Pages

One of the great capabilities of SharePoint is its ability to benefit of structured and repeatable deployment. When working on a custom solution you could wrap all the components in a SharePoint Solution and hand it over to the customer. Upon installation they would end up with a box of building blocks to assemble the solution. While this is an option, it is definitely a better idea to package your configuration together with your assets. Instead of providing your customer with a set of building blocks, it allows you to provision the fully configured solution with everything on the right place. This approach allows you to simplify the deployment and configuration process and to make it more predictable. And this is exactly where CKS:DEV gets very useful.

WCM solutions contain many preconfigured pages like the home page, some overview pages, etc. where all Web Parts have been put in the right place and configured. CKS:DEV allows you to export such pages to XML so that you can include them in your project for easy deployment! To export a preconfigured Publishing Page go to Server Explorer, find the page that you want to export, click right mouse button on it and choose Export. The configuration of the Publishing Page will get exported to Visual Studio where you are able to edit it and add to your project.

Exporting preconfigured Publishing Pages using CKS:DEV

In order to provision a Publishing Page declaratively using a Feature you need a Template Page. While you can find one in the SharePoint Root, you can also make CKS:DEV generate one for you. To generate a Template Page click right mouse button on a Publishing Page and choose Get Template Page from the menu.

Read more about provisioning preconfigured Publishing Pages in the Provisioning Publishing Pages using Features declarative markup article (http://blog.mastykarz.nl/provisioning-publishing-pages-features-declarative-markup/).

Quick Deploy

One of the most frequently performed tasks during the development process is verifying if everything that you’ve just done works correctly. In terms of SharePoint it means deploying the SharePoint Solution which contains your assemblies and assets. The deployment process of SharePoint Solutions is pretty complex and consumes considerable amounts of time compared to ASP.NET development where you can make a change to your page or control, hit F5 and you can immediately see the results in your browser. Microsoft has done some great work optimizing the packaging and deployment process and bringing in the F5 experience to SharePoint in the Wave 14. And although the new Visual Studio 2010 SharePoint Developer Tools are of great help, frequently verifying your changes takes still way too much time.
One of the capabilities of CKS:DEV is the ability to perform quick deploy of your changes to SharePoint. Using CKS:DEV you can quickly copy the modified files to SharePoint without performing the complete build process. CKS:DEV gives you three quick deployment options: one for quickly copying changed assets to SharePoint Root and one for copying assemblies to GAC/BIN and to copy both assets and assemblies. To perform quick deployment of your changes, click right mouse button on the project and choose Quick Deploy (CKSDEV) from the project context menu.

CKS:DEV Quick Deployment options for SharePoint Projects

On top of the on-demand quick deployment, CKS:DEV offers you automatic quick deployment, so that each time you change anything in your project, CKS:DEV will automatically copy the changed files. This is a great win in terms of productivity as it allows you to focus on your work and not think about the deployment at all! Enabling automatic quick deployment is a per project settings. To enable it, select your project in the Solution Explorer, open the Properties window and configure the Auto Copy options.

Configuring CKS:DEV Quick Deployment for a SharePoint Project.

Summary

CKS:DEV is a great asset in the SharePoint developer’s toolbox. Being fully integrated with the new Visual Studio 2010 SharePoint Developer Tools it makes it easier for you to develop SharePoint 2010 solutions. By automating many common tasks that SharePoint developers do every day, it helps you get very productive and allows you to focus on the real work instead the routine process of packaging and deploying SharePoint assets.

CKS:DEV is a free, open source, community-driven product. This article presents only a few of the new capabilities that CKS:DEV offers to SharePoint developers that can be used while working on Web Content Management Solutions but CKS:DEV contains other extensions as well. New capabilities are continuously being added to CKS:DEV based on the community feedback. That really makes it a toolkit built by SharePoint developer for SharePoint developers.

SharePoint Solution for Interdepartmental Business Process – Phase 1: Form Initiation

We are a specialty commercial insurance company (Excess and Surplus Lines) that was acquired/merged with a larger corporate parent a couple of years ago. We continue to be challenged by the need to make our processes and practices more transparent to our parent company, especially since they have no experience with the type of business we write. Over time we have developed thousands of policy forms specific to our niche market. The process surrounding form creation, use and maintenance is a primary company function.
 
The Regulatory department is responsible for storage of policy coverage forms (mostly Word and Excel files) in an aggressively permission-protected file share we call the Form Library. They are available in read-only format to most associates. To facilitate navigation of the library, the forms were catalogued in a massive Excel spreadsheet by one dedicated Regulatory associate (RA). Key fields about each form were captured (such as form number, line of business, description, effective date, cross reference, and states in which that form had been filed).
 
This RA spent hours each day updating the spreadsheet, digging into folders/subfolders to find forms, emailing status updates and generating other communications to various managers/executives/colleagues pertaining to form activity. She was the sole point of contact for this data, causing bottlenecks and slowdowns if she simply took a vacation day. With the increase in activity following our company’s acquisition, it was only getting worse. The associate knew enough about SharePoint to recognize its potential and wanted a better way to leverage the untapped resource that the spreadsheet represented. She came to me with a request to transition from the Excel spreadsheet to SharePoint.
Her request led to creation of the Forms Portal, a SharePoint site designed to replace the Excel spreadsheet and facilitate access to its valuable data to the whole company. The decision was made to not place the documents themselves into SharePoint, but to link to them from the list we now called the Form Catalog. Now, anyone could find out with just a click when a form was created, get cross-reference information, open the form itself, or any of a dozen inquiries that previously required them to go through Regulatory.
 
Each list item in the Form Catalog contained the columns present in the original spreadsheet, along with new fields and calculated columns which passed even more data on to the users. Versioning added yet another layer of information. Soon we had built workflows for email communication, a search function, supporting document attachments and much more than was ever possible using just Excel. (The launch of the Forms Portal as a vehicle to present the Form Catalog to the company paved the way for everything to come, and we owe a lot to that one associate for her foresight and desire to find a better way.)
 
With this foundation laid, the next project to emerge from the Forms Portal dealt with the Forms Process itself. In very simple terms, the Forms Process involves the crafting of language for a new policy form (or changes to an existing form), often in response to a specific event or industry trend. Once the language is written and approved for use, it is then made available to the brokers and agents through whom we market our business.
 
Within our company, it was well known that the Forms Process was ripe for improvement. Once we were acquired, this reached critical mass. SharePoint was first suggested as a possible solution in late January 2010, when automation of a specific feedback sub-process was requested by the underwriting department following launch of the Form Catalog. As research into the requirements proceeded, it became clear that dealing with a single sub-process was not going to achieve anything. We had to attack the entire beast.

 

Project Preparation

Up to now, my SharePoint projects were handled without benefit of a dedicated PM or BA- I do everything! My first step here was to request that a project manager get between me and the business users. I cannot stress how valuable this was, and what a relief it was not to have to wear both hats and field every question. I knew I could never tame this tiger alone.
 
It is very difficult for me to take off the “solution developer” hat and put on the project manager hat. My first instinct is always to jump right in and try to fix whatever they bring to me. Often, though, that’s not the right response. My PM was great at keeping the focus where it needed to be and weeding out “nice-to-haves” from the “must-haves.” (An added benefit was the fact that she’d been with our company over 15 years and already knew every player and every relationship quirk!)
 
NancySkaggs.jpgThe first thing my PM did was an analysis and documentation of the entire Forms Process, start to finish, as it currently stood. This took several weeks, during which she interviewed participants at each point in the process and recorded “who did what” at every step. The result was a 20+ page document detailing the involvement of individuals at every level in nearly every department in the company. This was a massive undertaking that was in itself a remarkable achievement. Next came my evaluation of their process document. I had two primary goals- first, to make sure I had a thorough understanding of the process; second, to determine SharePoint’s potential value within that process. For me, this was the true beginning of the project. I looked for potential breakdowns in communication, reliance on email chains, approval steps, feedback loops and other areas where I thought SharePoint could help. From that analysis, we sat down to draw up our project objectives.
 
 

How Much Does SharePoint Cost?

Guest Author: Clare Stone
Pentalogic Technology

One of the top questions you’ll ask if you’re looking at deploying a SharePoint solution for your organization is – how much is this going to cost us? While the exact answer depends on the size of your business and what you want from SharePoint, this post will look at the cost of entering the SharePoint sphere.

There are many options available and many variables that may come into play here – so the figures we are giving are not designed to cost a solution down to the last cent – rather to give you a “ball park” idea of what each level of the SharePoint solution is likely to cost, and perhaps more importantly the size of the steps between each level.

At each level there are a number of cost elements that you will need to take into account when working out your pricing:

  1. Server Licenses: SharePoint is a server application and whatever level of SharePoint you are running you will need one or more server licenses before you can run the software.
  2. SharePoint License: In addition to your server license you will need a SharePoint license.
  3. CALS: Client Access Licenses: These allow users, or devices (desktops/laptops etc) access to your SharePoint server, and you will need one for every user/device you wish to grant access to.
  4. External Connector License: want to use SharePoint for your public facing website?  After all, it’s free right?  Wrong?  Clearly you can’t use CAL’s to give access to users of an public facing website, so instead you will need a External Connector License.  Microsoft’s pricing guidelines on these helpfully state “Varies” – (thanks Bill!)  You should budget at least a couple of $k, and potentially much more, depending on the size of your installation. We have not factored the External Connector License into our price estimates here.

Finally, you will want to think about hardware costs.  Here we are simply discussing software costs and it may well be that in order to implement you desired SharePoint deployment you are going to need additional hardware as well.

Now, before we get on let’s have a little clarification on the 3 levels of SharePoint – because Microsoft does like to change the names fairly regularly.

SharePoint Versions 2007 and 2010

There is relatively little difference between 2007 and 2010 in terms of the pricing models, so in this article we have stuck with the 2010 terminology.

1. SharePoint Foundation

This is the “free” version of SharePoint that was known as Windows SharePoint Services (WSS) in 2007. It comes bundled with Windows Small Business Server (SBS) or can be downloaded free with Windows Server. It includes most of the powerful collaboration features, some basic search capabilities and limited content management features. Microsoft Windows Server costs from $1,088.00 and SBS costs from $1,428.00

SBS comes with five CALs as standard. This allows five users or devices access to the server and you’ll need to figure out if you might need more than this. Additional user or device CALs cost from $44.00.

There are two types of CAL – a user CAL is restricted to an individual while a device CAL is restricted to one device. Device CALs might make sense if you want to assign multiple users to one device, such as shift workers. User CALs are a good option if you have roaming employees who need access to the corporate network from mobile devices or employees who use multiple devices on your network.

Foundation is a comprehensive solution at an affordable price for small businesses but you miss out on sophisticated features like document workflow and content authoring. If there is one piece of ‘missing’ functionality that exists in the standard solution, you could look at enhancing Foundation with custom code or buying a third party tool rather than upgrading to Standard or Enterprise.

2. SharePoint Standard

If your organization has more than about 25 employees, you may need to look at buying SharePoint Standard, previously known as MOSS. SharePoint 2010 Server costs from $4,900 and a single license for the Standard edition is priced from $7,389. This option provides the core capabilities of SharePoint; sites, communities, content and limited search and composite features. You will need to buy additional standard CALs for MOSS and the Standard edition of the software. For this option, user CALs cost from $125 and device CALs cost from $142. Do bear in mind that this option is only for one server – you may need to invest in licenses for additional servers as your organization grows.

3. SharePoint Enterprise

This option will fulfil your demands if you have thousands of employees in your business and ball-park estimates for a server license range from $57,000. This option delivers the full range of features with additional search, composites and powerful data insights. Again, you’ll need to invest in user or device CALs and an additional FAST search server license from $22,000 if your organization demands it.

Bridging the Gap

So we can see that even with SharePoint there really is no such thing as a free lunch – even “free” Foundation will come at a cost for most of us.  And we can also see that the gaps in pricing between the different levels are pretty huge.

So what are your options if you find that the SharePoint level you are currently using is no longer giving you quite enough functionality?

Well you could dig deep into your corporate pockets and go for a full upgrade.  Or you might consider looking at 3rd party add-one that fill your particular functionality gaps at a fraction of the price.

For example, if you are happy with Foundation, but need more advanced filtering capabilities you could cough up $12,000+ for a full upgrade to MOSS, or you could simply buy a 3rd party SharePoint Filtering product for around $500.

3rd party add-ons exist to fill many of the gaps in SharePoint functionality and can represent a cost effective alternative to a full upgrade to the next level.

I hope this post helps your quest to figure out how much SharePoint will cost your organization and I’ve added some useful links for you to check out below.

How much has SharePoint cost you so far? Let us know if you’re feeling brave!

Useful links

Official SharePoint licensing details
http://sharepoint.microsoft.com/en-us/buy/Pages/Licensing-Details.aspx

Compare the different editions of SharePoint at-a-glance
http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx

Get more official estimates for volume licensing
http://www.microsoft.com/licensing/mla/product.aspx

Some SharePoint pricing examples for different businesses
http://www.sharepointblues.com/2010/10/25/sharepoint-2010-pricing-examples/

SharePoint versions explained
http://blog.pentalogic.net/2010/06/sharepoint-versions-history/

CAL’s (Device/user) and External Connectors
http://www.microsoft.com/licensing/about-licensing/client-access-license.aspx

http://en.wikipedia.org/wiki/Client_Access_License

Guest Author: Clare Stone
Pentalogic Technology

Clare is Marketing Manager for Pentalogic Technology: developers of SharePoint webparts designed with the end user in mind.  Clare started her career in qualitative research and has spent more than 20 years working in marketing in a wide variety of industries.  Pentalogic is her first foray into the world of software  – so in relation to SharePoint she identifies closely with her customers, as she is definitely not a techie, and very much an End User herself.

[tweet]

Is SharePoint good for ECM?

For some reason, many companies (mostly larger ones) don’t really consider SharePoint a good ECM platform. In fact, even some SharePoint administrators are dismissive of it’s ECM capabilities. Perhaps there’s been a quiet campaign against labeling SharePoint as an ECM platform or perhaps it’s just tough to leave the perception of SharePoint 2001 & 2003 behind. It seems this is prevalent throughout the IT circles of larger companies and even government. But, I’m mostly basing these comments on my own experience in the last three years or so.

Let’s take a look at some recent developments. First, what prompted me to write this article was the latest Gartner report: Magic Quadrant for Enterprise Content Management. Over the past few years SharePoint has been inching up the scales and here’s where we stand today:

Yes, news was buzzing that “Microsoft overtakes IBM in ECM MQ, WCM MQ, Horizontal Portals and Social Software for Workplace” all week. Products like Documentum (from EMC) and WebSphere (from IBM) have long been leaders. However, I can’t remember when either was a leader in all four categories above. Microsoft has done an excellent job of maturing SharePoint while IBM and others like Oracle, have done a very poor job of integrating their acquisitions to compete.

For most companies, even the larger ones who truly have a need for ECM, I think SharePoint does the job well. Sure, Documentum or WebSphere may have a fancy feature that SharePoint can’t deliver out of the box but this is where the true power of SharePoint comes in. SharePoint is a development platform so you could certainly add the needed functionality through custom code or a third party tools. The SharePoint ecosystem is wide and strong. I always refer to http://www.sharepointreviews.com for new or niche products to take a SharePoint feature to the next level. Even no code solutions exists, its simply a matter of creativity and discovery. For a recent example, take a look at Corey Roth’s (@coreyroth) article: Spice up Your ECM with Ratings.

When we talk about ECM, we’re really talking about large amounts of data. So another trend of late is to outsource the hosting of that data: Cloud. I think Microsoft has a solid cloud platform (Office365) and it’s hard for others to really compete. In my previous article, How Do The SharePoint Alternatives Stack Up?, I pointed to Google Apps as the cloud play. But as I point out in that article, Google is not really ready for enterprise. In fact, there are many stories of companies switching from Google to Microsoft (like this one, this one, and this one). This is affirmed in the previous Magic Quadrant, no sign of Google there.

Companies, large and small, are now using SharePoint to increase productivity and enable their workforce. I encourage companies, large and small, to take a look at what their competitors are doing by heading over to http://www.topsharepoint.com. This site primarily shows public sites, but you can be sure that most of these companies switched their internal sites (ECM/Intranet) to SharePoint first and then went public (WCM).

To learn more about SharePoint’s ECM capabilities, visit these resources:

Guest Author: Wahid Saleemi
http://www.wahidsaleemi.com

Wahid Saleemi is a Senior Consultant for SharePoint at Avanade. He has worked on Enterprise Systems for over 10 years, and has been focusing on SharePoint technologies since 2006. Wahid’s experience includes design, deployment, and maintenance for SharePoint 2003 to 2010 products in the US military and federal government space. More recently, he’s started working with large companies to help them realize success during the transition to cloud with the BPOS/Office365 technology stack. Wahid’s certifications include MCITP: SharePoint Server 2010, MCSE, CCNA, and Security+.

Wahid also blogs from time to time on his site: http://www.wahidsaleemi.com and can be found on twitter @wahidsaleemi.

[tweet]

SharePoint Content Types: Is this a lost cause?

 

Guest Author: PatCharles Iovanella

I work for a firm with over 44,000 SharePoint users. Of that, a little more 10% are actual site owners. As the Americas SharePoint Evangelist my focus is on end user adoption, best practices, site design and site administrator training. I have implemented diverse training methods and covered many topics to get that 10% using SharePoint to its full potential. Much of what I have preached has been widely accepted and implemented…except for content types.

I have demonstrated the awesome power of content types through our internal SharePoint newsletter, created training videos and conducted one-on-one training sessions. I designed and implemented a global online SharePoint Advice Center to answer all SharePoint related queries. We have had over 600 requests for SharePoint assistance. Not one of these queries was about content types.

We even had Mark Miller provide classroom training with key focus on content types. These classes ran for a good 10 months (2 per month) and were sold out for every session. In the labs, attendees were awed by the power of content types. They loved them. They saw the enormous benefit. But something happened the moment they went back to their workstations. Nothing. They seem to lose interest. Why? Are content types too difficult for the average site administrator to implement? Does going into the Site Content Type gallery evoke fears of destroying existing list and libraries? Is the concept just too “geeky”?

I have done a bit of pondering on this and tried to think like the average site administrator (Definition: Average site administrator- A person whose manager has made them a SharePoint site administrator)

I have concluded three things about my average site administrator:

  1. They don’t understand content types
  2. They don’t care about content types
  3. They don’t need content types

In my firm it’s most likely a combination of 1 & 3. But isn’t that the true power of SharePoint, its flexibility? SharePoint gives end users many different ways to achieve the same end goal. And at the end of the day, should I really be that concerned if they don’t understand or use content types? Should I let the average site administrator remain in ignorant bliss? Or should I continue to push them out of their comfort zones into a brighter, bolder SharePoint world?

Does anyone else have a similar situation with content types? Or maybe some other feature or function in SharePoint where the “buy in” or concept is just not catching on?

Guest Author: PatCharles Iovanella

PatCharles Iovanella works for major financial institution as the Americas SharePoint evangelist and subject matter expert delivering SharePoint business solutions to internal clients. You can contact him at pativo67@ghttp://www.endusersharepoint.com/2010/11/29/sharepoint-content-types-is-this-a-lost-cause/mail.com.

[tweet]

QOTD: Filter a Column with Multiple Users

Author: Eric Alexander, Moderator, Stump the Panel

Dave_S writes on Stump the Panel:

I have a list that contains 3 user (peoplepicker) columns. Two of the columns only allow for a single entry (user) so filtering on [ME] works fine. The 3rd column gets its users from workflow and allows for multiple users (seperated by semi-colon) so filtering for "3rd column contains [ME] does not work.

I don’t believe I can overcome this by creating a data view web part as the source includes a combined (joined) datasource and the view needs to be a datasheet view.

I would really appreciate your suggestions, a method to filter a column with multiple users.

Thanks,

Dave

This can still be done out of the box using a PersonColum is equal to [ME] filter. If you try to set a Contains [ME] filter, you’ll receive an error message that the column type isn’t valid for that type of filter.

My theory is that there is some sort of code in the column definition that is automatically adding a contains or something similar to the code when the [Me] parameter is used. This is just conjecture, but it would explain why you can use is equal to [Me] to function like a contains. I’d be interested to know the “why” as to how this works.

Author: Eric Alexander, Moderator, Stump the Panel

Eric Alexander is a SharePoint Administrator working in the Higher Education sector. He wears many hats in this role and enjoys leveraging SharePoint to build solutions to solve problems across campus. You can find him on Twitter as PirateEric and lurking in the Stump the Panel forums.
http://feeds.feedburner.com/EricsSharepointAdventures

[tweet]